-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