sql-server - 当数据不存在时,T-SQL 添加带零的行

标签 sql-server t-sql

我知道这个问题已被回答过几次,但我仍然无法添加额外的行,而数据在数据存在之前并不存在。

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 没有数据,直到有为止?

enter image description here

最佳答案

试试这个

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/

相关文章:

sql-server - 父/子层次结构 TreeView

sql - 有没有办法延迟存储过程执行计划的编译?

sql - 表中具有特定列总和的行

sql - 在sql中将varchar转换为datetime

sql-server - SQL Server 案例/排序规则问题

sql - T-Sql 选择 * 30% 到 40% 之间

sql-server - 如何在grails的表中使字段自动递增?并在删除后调整其他记录

mysql - T-SQL 和 MySQL 的 SELECT 语法之间的差异

c# - 如何通过 OPENXML 解析存储过程中的 xml 序列化 List<int>?

sql - 将字符串分配给 THEN 子句中 case 语句中的变量