[英]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.