-2
當事件爲「Regular」時,以下查詢正在查找按對象計算的天數,但由於該對象屬於指定日期範圍,查詢結果顯示「Clearance」。有沒有辦法讓這個查詢只顯示日期範圍爲4/10/2017的「Regular」事件通過Today的對象?我已經嘗試了Event NOT IN C或S,並在where子句中移動事件,但獲得了相同的結果。COUNT CASE語句返回不需要的查詢結果
表1:
Cal_Date Object Event Time Stamp Time Stamp
4/10/2017 Soap Regular 4/10/2017 4/10/2017
4/11/2017 Soap Sale 4/11/2017 4/14/2017
4/12/2017 Soap Sale 4/11/2017 4/14/2017
4/13/2017 Soap Sale 4/11/2017 4/14/2017
4/14/2017 Soap Sale 4/11/2017 4/14/2017
4/15/2017 Soap Regular 4/15/2017 4/20/2017
4/16/2017 Soap Regular 4/15/2017 4/20/2017
4/17/2017 Soap Regular 4/15/2017 4/20/2017
4/18/2017 Soap Regular 4/15/2017 4/20/2017
4/19/2017 Soap Regular 4/15/2017 4/20/2017
4/20/2017 Soap Regular 4/15/2017 4/20/2017
4/10/2017 Shampoo Clearance 4/10/2017 12/31/2017
4/11/2017 Shampoo Clearance 4/10/2017 12/31/2017
4/12/2017 Shampoo Clearance 4/10/2017 12/31/2017
4/13/2017 Shampoo Clearance 4/10/2017 12/31/2017
4/14/2017 Shampoo Clearance 4/10/2017 12/31/2017
4/15/2017 Shampoo Clearance 4/10/2017 12/31/2017
4/16/2017 Shampoo Clearance 4/10/2017 12/31/2017
4/17/2017 Shampoo Clearance 4/10/2017 12/31/2017
4/18/2017 Shampoo Clearance 4/10/2017 12/31/2017
4/19/2017 Shampoo Clearance 4/10/2017 12/31/2017
4/20/2017 Shampoo Clearance 4/10/2017 12/31/2017
SELECT
OBJECT
COUNT(CASE WHEN EVENT='Regular'AND CAL_DATE BETWEEN DATE '4/10/2017' AND CURRENT_DATE THEN 1 END) AS DAYS
FROM TABLE 1
GROUP BY
OBJECT
查詢結果:
Object Days
Soap 7
Shampoo ?
期望的結果:
Object Days
Soap 7
使用HAVING語句。 –
我不知道teradata,但是不可能簡單地將這些條件放在WHERE子句中,然後計數(*)?在Oracle中,這個工作正常:'選擇OBJECT,從TEST_MYTABLE01計數(*)WHERE EVENT ='Regular'AND CAL_DATE BETWEEN to_date('10 .04.2017','dd.mm.yyyy')AND sysdate Group by OBJECT' – Demo
您的結果'Shampoo?'不能被你的查詢返回,它將是'Shampoo 0'。 – dnoeth