簡體   English   中英

帶分組的 Tableau/SQL 計算字段

[英]Tableau/SQL Calculated Field With Grouping

我有一個具有以下結構的表

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'。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM