2014-09-23 25 views
0

如何在單個sql查詢中獲得布爾列的所有值的「AND」。如何在單個sql中獲得布爾列的所有值的「AND」

enter image description here

爲鄰以上/ p應該是假的,

如果所有屬實則O/P:真,

如果所有/ atlease一個值假,則O/P :假。

+0

爲什麼你會需要這個? – hgulyan 2014-09-23 07:38:42

+0

我必須啓用/禁用基於此值的C#ui中的按鈕。 – 2014-09-23 07:39:50

+0

加載的方法來做到這一點,但我能想到的最簡單的方法是簡單地總結它們並檢查總和是否如預期 – 2014-09-23 07:40:25

回答

2

試試這個

IF EXISTS (SELECT ActiveStatus From TableName where ActiveStatus = 0) 
    SELECT 'False' 
ELSE 
    SELECT 'True' 
AS OutputColumn 
0
declare @status varchar(10) 
if exists(select null from [Status] where ActiveStatus = 0) 
    set @status = 'false' 
else 
    set @status = 'true'  


select @status as [Status] 
2

可以間接使用MIN爲AND和MAX爲OR.if你考慮到一個BIT科拉姆是零個或一個:

  • MIN:只有當所有的值都是1(真),結果將是1(真),它的工作原理類似AND
  • MAX:如果至少有一個1(真),其結果將是1(真),它就像OR

如果您嘗試直接在BIT列中使用MINMAX,它會失敗,所以你需要將其轉換爲整數類型,回位,像這樣:

SELECT CAST(MIN(CAST(BitColumn AS TINYINT)) AS BIT) FROM Table -- for AND 

SELECT CAST(MAX(CAST(Bitcolumn AS TINYINT)) AS BIT) FROM Table -- for OR 

可以很容易地包括這更復雜的查詢,例如一個與GROUP BY

相關問題