[英]Multiple Column Conditional Count SQL
我試圖計算連續4個單獨列中的不同條目,然后總計結果。
例如,表頭看起來類似於:
ID Col1 Col2 Col3 Col4
每列(保存ID)可以具有文本值W,X,Y或Z.列可以具有相同的值。
我想要做的是計算一個計算列中每個條目的方法,但每行只計算一次W,X,Y和Z. 因此,如果:
ID Col1 Col2 Col3 Col4
X X Y
Y W X
Z Y Y
結果表將是:
Value Count
W 1
X 2
Y 3
Z 1
任何幫助將不勝感激。
這樣的事情應該為你的例子做4例:
select 'W' as [Value], count(*) as Count from Table1
where Col1='W' or Col2='W' or Col3='W' or Col4='W' union
select 'X' as [Value], count(*) as Count from Table1
where Col1='X' or Col2='X' or Col3='X' or Col4='X' union
select 'Y' as [Value], count(*) as Count from Table1
where Col1='Y' or Col2='Y' or Col3='Y' or Col4='Y' union
select 'Z' as [Value], count(*) as Count from Table1
where Col1='Z' or Col2='Z' or Col3='Z' or Col4='Z'
演示: http ://www.sqlfiddle.com/#!3 / 68aa3 / 11
編輯:如果有很多可能的值,可以通過合並所有可能的值並動態計算它們來進一步簡化:
select V.Value as [Value],
count(IIF(col1=[Value] or col2=[Value]
or col3=[Value] or col4=[Value],1,NULL)) as [Count]
from Table1, (
select distinct col1 as [Value] from table1 union
select distinct col2 from table1 union
select distinct col3 from table1 union
select distinct col4 from table1) V
where V.value is not null
group by V.value
也許我錯過了一些東西,但這會像下面這樣簡單:
Select Val, Count(*)
From (
Select Id, Col1 As Val From Table1
Union Select Id, Col2 From Table1
Union Select Id, Col3 From Table1
Union Select Id, Col4 From Table1
) As Z
Where Z.Val Is Not Null
Group BY Z.Val
沒有理由一起使用Distinct
和Union
,因為Union
將使結果明顯。 因此,我們需要為每一行包含唯一值( Id
)。
SQL Fiddle (這使用SQL Server,但相同的語法將在MS Access中工作)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.