获得单行和2列结果:第一列中包含count(*),第二列中包含连接字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获得单行和2列结果:第一列中包含count(*),第二列中包含连接字符串相关的知识,希望对你有一定的参考价值。
表:我在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,那会很棒)
答案
获取已在子查询中链接的字符串连接的解决方案以获取文本。将它与另一个子查询放在一起计算。并选择一个作为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版本无法做到。)
以上是关于获得单行和2列结果:第一列中包含count(*),第二列中包含连接字符串的主要内容,如果未能解决你的问题,请参考以下文章