我知道这个问题已被回答过几次,但我仍然无法添加额外的行,而数据在数据存在之前并不存在。
DECLARE @Test TABLE
(
ID NVARCHAR(10)
,Number INT
)
INSERT INTO @Test VALUES ('TG32',6)
INSERT INTO @Test VALUES ('TG32',6)
INSERT INTO @Test VALUES ('TG32',6)
INSERT INTO @Test VALUES ('TG32',2)
INSERT INTO @Test VALUES ('QD65',2)
INSERT INTO @Test VALUES ('QD65',3)
INSERT INTO @Test VALUES ('QD65',3)
INSERT INTO @Test VALUES ('HT76',7)
INSERT INTO @Test VALUES ('HT76',1)
INSERT INTO @Test VALUES ('HT76',5)
SELECT CASE WHEN ID = 'TG32' THEN 'Hats'
WHEN ID = 'QD65' THEN 'Coats'
WHEN ID = 'HT76' THEN 'Shoes'
WHEN ID = 'WR52' THEN 'Shirts' END
, Number
FROM @Test
我试图在结果中获取额外的一行,显示“衬衫 0”,而 ID WR52 没有数据,直到有为止?
最佳答案
试试这个
DECLARE @Test TABLE
(
ID NVARCHAR(10)
,Number INT
)
INSERT INTO @Test VALUES ('TG32',6)
INSERT INTO @Test VALUES ('TG32',6)
INSERT INTO @Test VALUES ('TG32',6)
INSERT INTO @Test VALUES ('TG32',2)
INSERT INTO @Test VALUES ('QD65',2)
INSERT INTO @Test VALUES ('QD65',3)
INSERT INTO @Test VALUES ('QD65',3)
INSERT INTO @Test VALUES ('HT76',7)
INSERT INTO @Test VALUES ('HT76',1)
INSERT INTO @Test VALUES ('HT76',5)
--
SELECT CASE WHEN ID = 'TG32' THEN 'Hats'
WHEN ID = 'QD65' THEN 'Coats'
WHEN ID = 'HT76' THEN 'Shoes'
WHEN ID = 'WR52' THEN 'Shirts' END
, Number
FROM @Test
UNION ALL
SELECT 'Shirts', 0
WHERE
NOT EXISTS
(
SELECT TOP 1 1 FROM @Test
WHERE
ID = 'WR52'
)
UNION ALL
SELECT 'Hats', 0
WHERE
NOT EXISTS
(
SELECT TOP 1 1 FROM @Test
WHERE
ID = 'TG32'
)
UNION ALL
SELECT 'Coats', 0
WHERE
NOT EXISTS
(
SELECT TOP 1 1 FROM @Test
WHERE
ID = 'QD65'
)
UNION ALL
SELECT 'Shoes', 0
WHERE
NOT EXISTS
(
SELECT TOP 1 1 FROM @Test
WHERE
ID = 'HT76'
)
关于sql-server - 当数据不存在时,T-SQL 添加带零的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38369494/