簡體   English   中英

在CASE WHEN中一次使用COUNT

[英]Single use of COUNT in CASE WHEN

我有一個MessageId列,並且必須計算不同MessageId的計數,如果結果為1,則必須將count顯示為0,否則將顯示計數值本身。 如果數據集更多,那么使用兩次不重復將更加耗時。

...
CASE 
   WHEN count(DISTINCT MessageId) = 1 
      THEN 0
   ELSE count(DISTINCT MessageId)
END as Count
...

無論如何,僅使用一個查詢本身就只能使用一次COUNT(DISTINCT)嗎? 而且也不想使用多個查詢,例如將其分配給變量然后使用它。

這是一種方法:

COALESCE(NULLIF(COUNT(DISTINCT MessageId), 1), 0)

看來你需要下面

case when sum( case when MessageId= 1 then 1 else 0 end) =1
then 0  else
count(DISTINCT MessageId) end as cnt

暫無
暫無

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

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