表 Person:Id_p, LastName
表 Orders:OrderNo, Id_p
需查詢:每個人的 Id_p, LastName, ItemCount(購買總數),無訂單顯示 0,LastName 為 null 顯示 'Unknown'。
SELECT
t.Id_p,
t.LastName,
COUNT(t.OrderNo) AS ItemCount
FROM (
SELECT
o.OrderNo,
ISNULL(o.Id_p, p.Id_p) AS Id_p,
ISNULL(p.LastName, 'Unknown') AS LastName
FROM Orders o
FULL JOIN Person p ON o.Id_p = p.Id_p
) t
GROUP BY t.Id_p, t.LastName;
LEFT JOIN UNION RIGHT JOIN 模擬。Id_p 為 null,以及 LastName 為 null 的情況。SELECT
t.Id_p,
t.LastName,
COUNT(t.OrderNo) AS ItemCount
FROM (
SELECT o.OrderNo, o.Id_p, p.LastName
FROM Orders o
LEFT JOIN Person p ON o.Id_p = p.Id_p
UNION
SELECT o.OrderNo, o.Id_p, p.LastName
FROM Orders o
RIGHT JOIN Person p ON o.Id_p = p.Id_p
) t
GROUP BY t.Id_p, t.LastName;
| Id_p | LastName | ItemCount |
|---|---|---|
| 1 | Wang | 3 |
| 2 | Unknown | 0 |
| 3 | Li | 2 |