簡體   English   中英

COUNT(DISTINCT(以('A','B'

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

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