我正在使用 SQL Server Management Studio 17。
我有一個帶有 group by 的 select 陳述句,它回傳以下值。這只是 170k 行的一個子集。
SELECT child, parent
FROM (SELECT child, parent
FROM table
GROUP BY child, parent) AS derivedtbl_1
ORDER BY child
| 孩子 | 家長 |
|---|---|
| 201 | 空值 |
| 201 | 991 |
| 201 | 1020 |
| 202 | 空值 |
| 203 | 空值 |
我正在努力尋找過濾掉第一行的選擇陳述句。如果一個孩子已經有一個 NOT NULL 的父級,那么我希望它過濾掉具有 NULL 值的行。
我試圖在有 count 陳述句時用一個案例來解決它。例如,如果一個值在子列中存在多次,那么我希望它過濾掉父為 NULL 的行,但到目前為止我的所有代碼都回傳錯誤。
| 孩子 | 家長 |
|---|---|
| 201 | 991 |
| 201 | 1020 |
| 202 | 空值 |
| 203 | 空值 |
uj5u.com熱心網友回復:
您可以在此處使用存在邏輯:
SELECT child, parent
FROM yourTable t1
WHERE
Parent IS NOT NULL OR
(Parent IS NULL AND
NOT EXISTS (SELECT 1 FROM yourTable t2
WHERE t2.Child = t1.Child AND
t2.Parent IS NOT NULL));

演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/363698.html
標籤:sql sql-server
