簡體   English   中英

多列條件計數SQL

[英]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

沒有理由一起使用DistinctUnion ,因為Union將使結果明顯。 因此,我們需要為每一行包含唯一值( Id )。

SQL Fiddle (這使用SQL Server,但相同的語法將在MS Access中工作)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM