簡體   English   中英

Teradata CASE和COUNT語法錯誤

[英]Teradata CASE and COUNT syntax error

尋找如何編寫CASE和COUNT查詢的方法,以按日期顯示從2/1/2017-4/19/2017之間的商品銷售總天數。 我收到的單詞“ DATES”和“ BETWEEN”之間有“預期的區別”。

表格1:

ITEM    SALE    DATES
Apple   Yes   4/19/2017
Apple   Yes   2/18/2017
Apple   Yes   1/17/2017
Apple   no    3/16/2017
Apple   no    4/17/2017
Banana  Yes   4/19/2017
Banana  Yes   2/18/2017
Banana  Yes   1/17/2017
Banana  Yes   3/16/2017
Banana  no    4/17/2017

我在尋找什么:

ITEM    Total days on sale
Apple          2
Banana         3

當前查詢:

SELECT
    ITEM,
    CASE WHEN SALE='YES' THEN COUNT(DATES BETWEEN '2/1/2017' AND '4/19/2017') END AS TOTAL_DAYS_ON_SALE_DAYS
FROM TABLE 1
GROUP BY 
    ITEM
ORDER BY 
    ITEM ASC

我認為您需要條件聚合:

SELECT ITEM,
       SUM(CASE WHEN SALE = 'YES' AND DATES BETWEEN DATE '2017-02-01' AND DATE '2017-04-19'
                THEN 1 ELSE 0
           END) AS TOTAL_DAYS_ON_SALE_DAYS
FROM TABLE 1
GROUP BY ITEM
ORDER BY ITEM ASC;

您可以僅將DATES上的該檢查移至WHERE子句。
求和

SELECT
ITEM,
SUM(CASE 
WHEN SALE = 'Yes' 
THEN 1 
ELSE 0 
END) AS TOTAL_DAYS_ON_SALE_DAYS
FROM TABLE 1
WHERE DATES BETWEEN '2/1/2017' AND '4/19/2017'
 GROUP BY ITEM
 ORDER BY ITEM ASC

您查詢的問題是,可以使用COUNT(DATES)之類的東西,但不能使用BETWEEN或=之類的條件。

暫無
暫無

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

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