sql 查询

SELECT
    A.username,
    SUM(CASE WHEN B.flag = 'colA' THEN 1 ELSE 0 END) AS count_A,
    SUM(CASE WHEN B.flag = 'colB' THEN 1 ELSE 0 END) AS count_B,
    SUM(CASE WHEN B.flag = 'colC' THEN 1 ELSE 0 END) AS count_C,
    SUM(CASE WHEN B.flag = 'colD' THEN 1 ELSE 0 END) AS count_D,
    SUM(CASE WHEN B.flag = 'colE' THEN 1 ELSE 0 END) AS count_E
FROM @tb1 AS A
    LEFT JOIN (
        SELECT colA AS name,'colA' AS flag FROM @tb2 WHERE colA IS NOT NULL
        UNION ALL
        SELECT colB,'colB' FROM @tb2 WHERE colB IS NOT NULL
        UNION ALL
        SELECT colC,'colC' FROM @tb2 WHERE colC IS NOT NULL
        UNION ALL
        SELECT colD,'colD' FROM @tb2 WHERE colD IS NOT NULL
        UNION ALL
        SELECT colE,'colE' FROM @tb2 WHERE colE IS NOT NULL
    ) AS B
ON A.username = B.name
GROUP BY A.username;

 

有2个表
表A
username
--------
刘丽娜
刘更胜
王英
吴洪波
王玉江
薛静
王前进
武文明
胡家和


表B
colA    colB    colC    coLD    colE
-----------------------------------------
苏凤林 李拥军 NULL 刘丽娜 靳文礼
王英 李拥军 宋建刚 NULL 刘更胜
任小东 李拥军 NULL NULL 刘丽娜
姚玉刚 NULL 姚玉刚 宋建刚 姚玉刚
宋建刚 NULL NULL 靳文礼 任小东
姚玉刚 NULL 任小东 NULL 刘丽娜
NULL NULL 任小东 姚玉刚 刘丽娜
NULL NULL NULL NULL 刘丽娜
NULL NULL 宋建刚 NULL 刘丽娜
靳文礼 NULL NULL 刘丽娜 刘丽娜
任小东 NULL NULL 宋建刚 靳文礼
刘丽娜 NULL 姚玉刚 NULL 宋建刚
NULL NULL NULL 姚玉刚 宋建刚
NULL NULL NULL NULL 宋建刚
NULL NULL 任小东 NULL 靳文礼
刘丽娜 NULL NULL 宋建刚 靳文礼
NULL NULL 任小东 NULL

最后想要的结果是

username countA countB countC countD countE
---------------------------------------------
刘丽娜        0    11    22      0      15
刘更胜        10    11    22      0      45
王英          30    11    12      0      22
任小东        0    0      0      0      17
....        ...  ...    ...    ...    ...

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值