表:我在SQL Server 2012中有一个数据库表table_1,其数据为:
CREATE TABLE table_1 ([ID] BIT, [Name] VARCHAR(10))
INSERT INTO table_1 ([ID],[Name]) VALUES (1,'A')
INSERT INTO table_1 ([ID],[Name]) VALUES (0,'B')
INSERT INTO table_1 ([ID],[Name]) VALUES (0,'C')
我想要的是是一行,结果中有两列。像:
col_1 col_2
2 B, C have zero value
所以我想知道列[ID]中的条目数是0,然后在结果中显示col_1的计数。然后当列[ID]为0时,col_2应该具有列[name]中的所有(连接的)字符串。以后从列[name]获取连接字符串的部分是我无法获得的。
它必须非常简单但我无法在此SQL之外完成它:
SELECT COUNT(*) AS col_1 FROM table_1 WHERE ID = 0;
如何添加第二列col_2,它们会从col_2中连接字符串? 如果count(*)为零,则col_2可以为空。 (如果我可以添加NA,会很棒)
答案 0 :(得分:1)
获取已在子查询中链接的字符串连接的解决方案以获取文本。将它与另一个子查询放在一起计算。并选择col_1
另一个为col_2
。
SELECT (SELECT count(*)
FROM table_1
WHERE ID = 0) col_1,
(SELECT substring((SELECT ', ' + Name [text()]
FROM table_1
WHERE ID = 0
FOR XML PATH('')),
3,
len((SELECT ', ' + Name [text()]
FROM table_1
WHERE ID = 0
FOR XML PATH(''))) - 2)) col_2;
(在SQL Server 2014上测试过,但就我理解的文档而言,应该没有任何内容,2012版本无法做到。)