Tableau/SQL 带分组的计算字段
Tableau/SQL Calculated Field With Grouping
我有一个 table 具有以下结构
id, event_name, event_date
| 1 | a | 1.1.2020 |
| 2 | b | 3.2.2020 |
| 3 | b | 3.2.2020 |
| 3 | b | 5.2.2020|
| 1 | b | 31.12.2019 |
| 2 | a | 5.1.2020 |
我的目标是对 id 进行分组,然后我必须检查事件 'a' 的日期是否在事件 'b' 之前。如果是这样,我想输出 'ok' 和 'error' 否则。
在此示例中,这将导致
id, check
| 1 | error|
| 2 | ok |
| 3 | ok |
是否可以在 Tableau 中使用计算字段执行任务? SQL也行!
试试这个
Select id, case when diff<0 then 'ok'
else 'error' end as status from
(
Select id,
max(case when event_name ='a' then event_date end) -
max(case when event_name='b' then event_date end)
As diff
From table group by id order by id)
您可以将此查询与 UNION 子句一起使用:
select id, 'Error' "check" from mydata md where event_name='a' and id in
(select id from mydata where id=md.id and md.event_name<>event_name
and md.event_date > event_date)
union
select id, 'Ok' "check" from mydata md where event_name='a' and id in
(select id from mydata where id=md.id and md.event_name<>event_name
and md.event_date < event_date);
输出应该是:
| ID | 'ERROR' |
|----|---------|
| 1 | Error |
| 2 | Ok |
ID=3没有出现,因为event_name都是'b'.
我有一个 table 具有以下结构
id, event_name, event_date
| 1 | a | 1.1.2020 |
| 2 | b | 3.2.2020 |
| 3 | b | 3.2.2020 |
| 3 | b | 5.2.2020|
| 1 | b | 31.12.2019 |
| 2 | a | 5.1.2020 |
我的目标是对 id 进行分组,然后我必须检查事件 'a' 的日期是否在事件 'b' 之前。如果是这样,我想输出 'ok' 和 'error' 否则。
在此示例中,这将导致
id, check
| 1 | error|
| 2 | ok |
| 3 | ok |
是否可以在 Tableau 中使用计算字段执行任务? SQL也行!
试试这个
Select id, case when diff<0 then 'ok'
else 'error' end as status from
(
Select id,
max(case when event_name ='a' then event_date end) -
max(case when event_name='b' then event_date end)
As diff
From table group by id order by id)
您可以将此查询与 UNION 子句一起使用:
select id, 'Error' "check" from mydata md where event_name='a' and id in
(select id from mydata where id=md.id and md.event_name<>event_name
and md.event_date > event_date)
union
select id, 'Ok' "check" from mydata md where event_name='a' and id in
(select id from mydata where id=md.id and md.event_name<>event_name
and md.event_date < event_date);
输出应该是:
| ID | 'ERROR' |
|----|---------|
| 1 | Error |
| 2 | Ok |
ID=3没有出现,因为event_name都是'b'.