1

私は次の表を持っています:

名前| Col1 | Col2 | Col3
ジョンABC
ジョンADA
ビルAAD
ビルFAA
スティーブFAB
スティーブCCA

ジョン、ビル、スティーブの合計数を知りたいのですが...

例:ジョン:3、ビル:4、スティーブ:2

T-SQLを使用してこれを行うにはどうすればよいですか?ありがとう。

4

3 に答える 3

5

UNPIVOT次の機能を使用できます。

select name, count(val) TotalAs
from yourtable
unpivot
(
  val
  for col in (col1, col2, col3)
) u
where val = 'A'
group by name

SQL FiddlewithDemoを参照してください

于 2012-10-06T02:53:37.703 に答える
2

このSQLフィドルを試してみてください。

declare @table table (name varchar(10), c1 char(1), c2 char(1), c3 char(1))
insert into @table
SELECT 'John','A','B','C' UNION
SELECT 'John','A','D','A' UNION
SELECT 'Bill','A','A','D' UNION
SELECT 'Bill','F','A','A' UNION
SELECT 'Steve','F','A','B' UNION
SELECT 'Steve','C','C','A' 

; WITH CTE AS 
(
   SELECT name, 
       (SELECT Count(CASE WHEN val = 'A' Then 1 ELse Null end) 
        FROM (VALUES (c1),(c2),(c3)) AS value(val)) As ACOL
   from @table
)

SELECT Name, SUM(ACOL) ACount FROM CTE GROUP BY NAME
于 2012-10-06T02:47:18.963 に答える
0

SQL Server 2012 の場合はどうですか? それはより速いかもしれません。

select name,sum(datalength(concat(col1,col2,col3))-
                datalength(replace(concat(col1,col2,col3),'A','')))
from yourtable
group by name;
于 2012-10-06T03:46:54.927 に答える