2

user_id と ticket_type があるテーブルがあります。各 user_id が生成する各 ticket_type の数を返す SQL ステートメントを作成したいと考えています。

私はこれを思いつきましたが、これには、私が好きではない ticket_type のハードコーディングが含まれます。

select b.user_id, b.TypeA, B.TypeB, (b.TypeA + b.TypeB) As "Total Tickets" from
(select user_id, 
sum(case when ticket_type = '1' then 1 else 0 end) as "TypeA",
sum(case when ticket_type = '2' then 1 else 0 end) as "TypeB"
from 
database
group by user_id
) as b; 

これを行うより良い方法はありますか?誰かが linq クエリ式でも答えを提供できれば、本当に素晴らしいことです。

編集サンプル出力

User_ID Type_A Type_B 合計
ユーザー1 3 5 8
ユーザー2 1 2 3        
ユーザー3 6 8 14

サンプル データベース テーブル

DECLARE @Users As TABLE
(
    SN int,
    User_ID char(5),
    Ticket_Type int
)

INSERT INTO @Users VALUES
(1, 'user1', 1),
(2, 'user1', 1),
(3, 'user2', 2),
(4, 'user3', 1),
(5, 'user1', 2),
(6, 'user1', 2),
(7, 'user2', 2),
(8, 'user2', 2)
4

3 に答える 3