我正在尝试编写一个聚合多行的查询,并返回一个字符串值,以指示每列是否包含值。它需要检查每一列,如果列包含'true'值,则连接字符串结果以表示如此。
给定(在SQL Server 2008上):
Col1 | Col2 Row1: 0 0 Row2: 0 1
我需要一个结果,说明“Col1没有真,Col2有真”(逗号没关系)。
我的假设是我需要将CASE
或IF
语句与ANY
运算符组合在一起,但到目前为止语法都让我感到厌烦。
答案 0 :(得分:2)
以下查询将生成以下结果:Col1 has no true, Col2 has true
表示您的数据:
SELECT CASE
WHEN Col1Total = 0 THEN 'Col1 has no true'
ELSE 'Col1 has true'
END + ', ' +
CASE
WHEN Col2Total = 0 THEN 'Col2 has no true'
ELSE 'col2 has true'
END AS yourResult
FROM
(
SELECT SUM(Col1) AS Col1Total, SUM(Col2) AS Col2Total
FROM yourTable
) AS t