2017-04-20 101 views
-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 
+1

使用HAVING語句。 –

+1

我不知道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

+0

您的結果'Shampoo?'不能被你的查詢返回,它將是'Shampoo 0'。 – dnoeth

回答

-1

嘗試此。

SELECT 
    [OBJECT] 
    ,REGULAR = SUM(CASE WHEN [EVENT] = 'Regular' AND CONVERT(DATE,Cal_Date) BETWEEN '2017-04-10' AND CONVERT(DATE,GETDATE()) THEN 1 ELSE 0 END) 
FROM 
    TABLE1 
GROUP BY 
    [OBJECT] 
+0

是REGULAR在OBJECT下應該是不同的東西?它不承認查詢的那一部分。 – Hery0502