我有一个表tst1
,其中包含3行(如下所示)
create table tst1
(
agents varchar(5),
trig varchar(5),
trig2 varchar(5)
)
并具有以下数据
现在,我想要这样的输出(为每个代理找到独特的trig,并结合(trig1,trig2)列的计数
t1->3
t2->2
t3->5
我在下面的屏幕快照中显示了要为A gent选择的列
答案 0 :(得分:3)
您可以尝试使用UNION ALL
SELECT trig,COUNT(trig)
FROM (
SELECT trig
FROM tst1
UNION ALL
SELECT trig2
FROM tst1
)t1
WHERE trig IS NOT NULL
GROUP BY trig
或将CROSS APPLY
与VALUES
一起使用
SELECT v.trig,count(v.trig)
FROM tst1 t1
CROSS APPLY(VALUES(t1.trig),(t1.trig2)) v
WHERE v.trig IS NOT NULL
GROUP BY v.trig