我有一個很多列(比如說200)的表,它們都是布爾型的。我想知道其中哪些至少有一個記錄設置爲true。我想出了以下查詢工作正常:檢查很多colums至少有一個'真'
SELECT sum(Case When [column1] = 1 Then 1 Else 0 End) as column1,
sum(Case When [column2] = 1 Then 1 Else 0 End) as column2, sum(Case
When [column3] = 1 Then 1 Else 0 End) as column3, FROM [tablename];
它會返回列的'真'的行數。但是,這比我需要的信息更多,因此可能需要更昂貴的查詢。查詢不斷掃描所有記錄的所有字段,即使這不是必需的。
行有列,而不是相反。如上所述,你的問題很混亂。你有200行,你想知道是否至少有一列至少有一列是1?或者你的每行都有200列(我見過瘋狂的東西),並且你想知道,對於每一行,是否至少有一列是1? –
可以做一些類似'select * from tablename where 1 in(column1,column2,column3)' – JamieD77
您可以嘗試'SELECT MAX(column1)作爲column1,... FROM [tablename]'。這聽起來像你想知道每列是否有任何行是真的。如果是這種情況,那麼如果該列中的任何行爲真,MAX將返回1。 – Roberto