2011-12-02 84 views
0

我想寫一個查詢聚合許多行,並返回一個單一的字符串值,以指示每列是否包含一個值。它需要檢查每一列,並且如果該列包含「真」值,則將字符串結果連接起來以表示如此。SQL - 如何根據ANY結果連接字符串?

鑑於(SQL Server 2008上):

 
     Col1 | Col2 
Row1: 0  0 
Row2: 0  1 

我需要一個結果,指出 「Col1中有沒有真正的,具有Col2中真正的」(逗號無所謂)。

我的假設是,我需要將CASEIF語句與ANY運算符結合使用,但到目前爲止,語法還是讓我感到遺憾。

+0

哪些列的數據類型?我們可以假設它們全都是布爾值(1或0)嗎? –

+0

@DmitryBeransky - 是的,被評估的列都是布爾值 – STW

回答

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 
+0

謝謝,亞當!它在我的測試查詢中工作,現在將其擴展到真實的東西:) – STW

+0

@STW非常歡迎您。 –