2017-04-20 7 views
-2

イベントが「正規」であった場合は、以下のクエリは、オブジェクトによって日数のカウントを探していますが、そのオブジェクトが指定した日付の範囲内にあるため、クエリの結果は「クリアランス」と表示する結果。このクエリで、今日の日付から2011年4月10日までの日付範囲の「通常」イベントを持つオブジェクトのみを表示する方法はありますか?私は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節に入れてからcount(*)することはできません。オラクルでは、これが正常に動作します: 'selectオブジェクトは、WHERE TO_DATE('10 .04.2017' 、 'DD.MM.YYYY')とSYSDATE群との間にEVENT = '正規' AND CAL_DATE OBJECT' – Demo

+0

あなたの結果によってTEST_MYTABLE01からのカウント(*) '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

は違ったものになるはずOBJECT下にREGULARているのですか?それはクエリのその部分を認識しませんでした。 – Hery0502