我有一张桌子,里面有一个 user_id 和一个 ticket_type。我想创建一个 sql 语句,它将返回每个 user_id 生成的每个 ticket_type 的计数。
我想出了这个,但这涉及到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)