本文介紹了SQL Server:用 0 為不存在的行填充 MAX(列)值的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
對于表中不存在的行,我想為 MAX_TIER 返回 0
I want to return 0 for MAX_TIER for non existing rows in table
這是我目前的代碼:
SELECT
LAST_YARD_BAY, LAST_YARD_ROW, MAX(LAST_YARD_TIER) as MAX_TIER
FROM
Handlift
WHERE
HDCHKOUTD_OUT IS NULL
AND LIFLAG = 'A'
AND LAST_YARD_PARK = 'J1'
GROUP BY
LAST_YARD_BAY, LAST_YARD_ROW
ORDER BY
LAST_YARD_BAY, LAST_YARD_ROW;
截圖顯示了部分結果:
對于 Bay 005
我有 MAX_TIER
用于 ROWS 00A
到 00G
,但是對于 Bay 007
我只有 3 行:00E
、00F
和 00G
.
For Bay 005
I have MAX_TIER
for ROWS 00A
to 00G
, but for Bay 007
I have only 3 Rows: 00E
,00F
and 00G
.
如何為 4 個缺失的行(00A
、00B
、00C
)填充 MAX_TIER
和 00D
) Bay 007
和其他缺失的行?
How can I populate MAX_TIER
with value 0 for the 4 missing rows (00A
, 00B
, 00C
and 00D
) of Bay 007
and the other missing rows?
推薦答案
這就是您要找的嗎?
SELECT *
FROM T
WHERE LastYardBay = '005'
UNION
SELECT '007',
T1.LastYardRow,
ISNULL(T2.MaxTier, 0)
FROM
(
SELECT *
FROM T
WHERE LastYardBay = '005'
) T1
LEFT JOIN
(
SELECT *
FROM T
WHERE LastYardBay = '007'
) T2
ON T1.LastYardRow = T2.LastYardRow;
退貨:
+-------------+-------------+---------+
| LastYardBay | LastYardRow | MaxTier |
+-------------+-------------+---------+
| 005 | 00A | 3 |
| 005 | 00B | 4 |
| 005 | 00C | 1 |
| 005 | 00D | 1 |
| 005 | 00E | 1 |
| 005 | 00F | 4 |
| 005 | 00G | 1 |
| 007 | 00A | 0 |
| 007 | 00B | 0 |
| 007 | 00C | 0 |
| 007 | 00D | 0 |
| 007 | 00E | 5 |
| 007 | 00F | 4 |
| 007 | 00G | 1 |
+-------------+-------------+---------+
現場演示
更新:
因為你已經有了 '005'
你只需要一個 CROSS JOIN
然后用 IS NULL
as 過濾
Since you already have '005'
you need just a CROSS JOIN
then filter with IS NULL
as
WITH A AS
(
SELECT T1.LastYardBay LYB1,
T1.LastYardRow LYR1,
T1.MaxTier MT1,
T2.LastYardBay LYB2,
T2.LastYardRow LYR2,
T2.MaxTier MT2
FROM
(
SELECT *
FROM T
WHERE LastYardBay = '005'
) T1
CROSS JOIN
(
SELECT *
FROM T
WHERE LastYardBay != '005'
) T2
)
SELECT *
FROM T
WHERE LastYardBay = '005'
UNION
SELECT LYB2,
LYR1,
CASE WHEN LYR2 = LYR1 THEN MT2 ELSE 0 END MT
FROM A LEFT JOIN T ON A.LYB2 IS NULL;
這篇關于SQL Server:用 0 為不存在的行填充 MAX(列)值的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!
【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!