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