簡體   English   中英

選擇計數同一列但沒有NULL值

[英]Select count same column but no NULL values

我有這張桌子:

 id akce text xyza year 61 FF1231-00 Bob NULL NULL 58 NULL 2014 62 FF1231-00 Alice NULL NULL 57 NULL 2014 57 FF1231-00 1/2 SWC 2 20 NULL NULL 2014 58 FF1231-00 1/3 SWC 3 5 NULL NULL 2014 59 FF1231-00 Jim NULL NULL 57 NULL 2014 

現在,我試圖實現找出在SUM匹配中具有z列不為NULL的結果的數量

table.id = table.z WHERE table.z is NOT NULL

 id akce text xyza year 57 FF1231-00 1/2 SWC 2 20 NULL 2 2014 58 FF1231-00 1/3 SWC 3 5 NULL 1 2014 

我試圖做以下

SELECT T1.id, T1.text, T1.z, T1.akce, T2.[text], (SELECT COUNT(T1.z) where T1.z IS NOT NULL Group by T1.z)
FROM ubytov T1
LEFT OUTER JOIN ubytov T2
    ON T1.z = T2.id
    WHERE T1.akce='FF1231-00' AND T1.z IS NULL

但是有這個例外:

每個GROUP BY表達式必須包含至少一個不是外部引用的列。

你們能幫我實現這個目標嗎?

在此先感謝您的寶貴時間。

編輯:根據Fabio答案此查詢給了我想要的結果:

SELECT t.id
, t.akce
, t.text
, t.x
, t.y
, t.z
, qnt.Quantity
FROM ubytov t 
OUTER APPLY (SELECT COUNT(q.z) AS Quantity FROM Ubytov
q WHERE q.z = t.id) qnt WHERE t.z is NULL

據我了解,您想知道從z列中找到了多少相同的ID
嘗試CROSS APPLY (來自SQL Fiddle示例的查詢)

SELECT t.ID
, t.Akce
, t.x
, t.y
, t.z
, qnt.Quantity
FROM Test t
OUTER APPLY (SELECT COUNT(q.ID) AS Quantity FROM Test q WHERE q.z = t.ID) qnt

如果要從結果中刪除“ Quantity = 0行,
然后將OUTER APPLY更改為CROSS APPLY

嘗試這個:

SELECT T1.id, T1.text, T1.z, T1.akce, T2.[text], 
(SELECT COUNT(T3.z) FROM ubytov T3 where T3.z IS NOT NULL)
FROM ubytov T1
LEFT OUTER JOIN ubytov T2
    ON T1.z = T2.id
    WHERE T1.akce='FF1231-00' AND T1.z IS NULL

暫無
暫無

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

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