Teradata CASE 和 COUNT 语法错误
Teradata CASE and COUNT syntax error
寻找如何编写一个 CASE 和 COUNT 查询,以显示 2017 年 2 月 1 日至 2017 年 4 月 19 日期间按项目分类的总销售天数。我收到“预期 'DATES' 和 'BETWEEN' 关键字之间的内容。
Table 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 子句。
并总结 YES
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 或 = 这样的条件。
寻找如何编写一个 CASE 和 COUNT 查询,以显示 2017 年 2 月 1 日至 2017 年 4 月 19 日期间按项目分类的总销售天数。我收到“预期 'DATES' 和 'BETWEEN' 关键字之间的内容。
Table 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 子句。
并总结 YES
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 或 = 这样的条件。