假設我有這樣的表:用值x計數列至少一次
A B C
------------
1 0 0
0 0 1
1 0 1
0 0 0
我需要列的計數,其中1發生時(不論它發生的次數)。所以在這個例子中,計數爲2,因爲它出現在2列A & C. 這怎麼能在SQL服務器中完成?
編輯:從意見
也許固定的列數,但未知
假設我有這樣的表:用值x計數列至少一次
A B C
------------
1 0 0
0 0 1
1 0 1
0 0 0
我需要列的計數,其中1發生時(不論它發生的次數)。所以在這個例子中,計數爲2,因爲它出現在2列A & C. 這怎麼能在SQL服務器中完成?
編輯:從意見
也許固定的列數,但未知
像下面會給你正確的結果,如果列數是已知的,未知號碼此查詢欄查詢可以做成動態的。
SELECT
MAX(CASE WHEN colA = 1 THEN 1 ELSE 0 END) +
MAX(CASE WHEN colB = 1 THEN 1 ELSE 0 END) +
MAX(CASE WHEN colC = 1 THEN 1 ELSE 0 END) +
--...
MAX(CASE WHEN colZ = 1 THEN 1 ELSE 0 END) as CountOfColumns
FROM tableT
下面是一個動態查詢:
declare @q varchar(max)
select
@q= 'select ' +
stuff((
select
'+ MAX(CASE WHEN ' + C.name + ' = 1 THEN 1 ELSE 0 END) '
from
sys.columns C inner join sys.tables T
on C.object_id=T.object_id and T.name='tableT'
for xml path('')),1,1,'')
+ ' as CountOfColumns FROM tableT'
exec(@q)
如何讓它動態? – adityawho
@ stylojack_10添加了動態查詢。如果您覺得有用,請投票表決。 – DhruvJoshi
是固定的或動態的列數? – WiSeeker
它不知道。所以...亞..動態... 其實它的固定,只是不知道。 – adityawho
多麼奇怪的要求。所以你沒有一定數量的欄目來看?這聽起來像我的動態SQL。 –