[英]COUNT(DISTINCT(CASE WHEN IN ('A','B')
大家好,想知道是否有人可以提供以下帮助:
SELECT
HOST_ORDER_NO,
EARLIEST_PICK_DATE,
PRODUCT_NO,
PRODUCT_NUM_PARTS,
PRODUCT_WHS_LOCATION,
COUNT(DISTINCT(CASE
WHEN LEFT(PRODUCT_WHS_LOCATION,1) IN ('A','B','C','K','M','N') THEN 'BULK'
WHEN LEFT(PRODUCT_WHS_LOCATION,1) IN ('D','E','F') THEN 'TEN'
WHEN LEFT(PRODUCT_WHS_LOCATION,1) IN ('G','H','I','J','L') THEN 'TENSMALL'
ELSE 'SIP' END) AS 'ZONE',
MAX(COLLATION_INDICATOR),
COLLATION_GROUP_ID,
CASE WHEN COUNT(HOST_ORDER_NO)=1 THEN 'SingleOrder' ELSE 'MultiItem' END AS 'OrderType',
COUNT(*) AS 'ItemsInOrder',
YEARWEEK
FROM wk19
WHERE YearWeek = '201717'
GROUP BY HOST_ORDER_NO
HAVING OrderType = 'MultiItem'
ORDER BY HOST_ORDER_NO, COLLATION_GROUP_ID, MAX(COLLATION_INDICATOR);
我的错误是在案例陈述中,我希望能够查看订单来自仓库的不同区域。 该语句的其余部分工作正常,但是如果我需要简化一下,我可以做。
您的case
表达式仅缺少括号。 之后无需括号distinct
,所以:
COUNT(DISTINCT CASE WHEN LEFT(PRODUCT_WHS_LOCATION,1) IN ('A','B','C','K','M','N') THEN 'BULK'
WHEN LEFT(PRODUCT_WHS_LOCATION,1) IN ('D','E','F') THEN 'TEN'
WHEN LEFT(PRODUCT_WHS_LOCATION,1) IN ('G','H','I','J','L') THEN 'TENSMALL'
ELSE 'SIP'
END) AS ZONE,
忠告:仅对字符串和日期使用单引号。 不要将它们用作列别名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.