0

ほぼ次のような2つの結果セットがあります。

Id       Name    Count
1        Asd     1  
2        Sdf     4    
3        Dfg     567    
4        Fgh     23    

ただし、Count列のデータは2番目のデータとは異なり、次のように両方を表示したいと思います。

Id       Name    Count from set 1    Count from set two
1        Asd     1                   15
2        Sdf     4                   840
3        Dfg     567                 81
4        Fgh     23                  9

SQLでこれを行うにはどうすればよいですか(可能であればユニオンを使用)?私の現在のSQL、これが私がやりたいことをよりよく説明することを願っています:

(SELECT Id, Name, COUNT(*) FROM Customers where X)
union
(SELECT Id, Name, COUNT(*) FROM Customers where Y)
4

2 に答える 2

1

あなたは次のようなことをすることができます:

;WITH Unioned
AS
(
    SELECT 'Set1' FromWhat, Id, Name FROM Table1
    UNION ALL
    SELECT 'Set2', Id, Name FROM Table2
)
SELECT 
  Id, 
  Name,
  SUM(CASE FromWhat WHEN 'Set1' THEN 1 ELSE 0 END) 'Count from set 1',
  SUM(CASE FromWhat WHEN 'Set2' THEN 1 ELSE 0 END) 'Count from set 2'
FROM Unioned
GROUP BY Id, Name;

SQLフィドルデモ

于 2012-11-13T12:17:28.337 に答える
1
select * 
from
(
    SELECT 'S1' as dataset, Id, Name, COUNT(*) as resultcount FROM Customers where X
    union
    SELECT 'S2',Id, Name, COUNT(*) FROM Customers where Y
) s
pivot
(sum(resultcount) for dataset in (s1,s2)) p
于 2012-11-13T12:36:28.327 に答える