不同列的聚合计数

乍得

有两个表:

表一

  id   name    b_id1    b_id2   b_id3   b_id4
    1   a        10      8      null     null
    2   b        3       4       8       10
    3   c        10      5       4      null

表B

    b_id      title
     3        Value3
     4        Value4
     5        Value 5
     8        Value 8
     10       Value

表 A 在 b_id1,b_id2,b_id3,b_id4 上有 FK 到 b_id cloumn 上的表 B,

我们将按 Title 分组并计算它。类似于以下结果:

Title     Count
Value3     1
Value4     2
Value5     1
Value8     2
Value10    3
 Null      3
得到了

完整的工作示例:

DECLARE @Table1 TABLE
(
     [id] INT
    ,[name] VARCHAR(1)
    ,[b_id1] INT
    ,[b_id2] INT
    ,[b_id3] INT
    ,[b_id4] INT
);

DECLARE @Table2 TABLE
(
    [b_id] INT
   ,[title] VARCHAR(7)
);

INSERT INTO @Table1 ([id], [name], [b_id1], [b_id2], [b_id3], [b_id4])
VALUES (1, 'a', 10, 8, NULL, NULL)
      ,(2, 'b', 3, 4, 8, 10)
      ,(3, 'c', 10, 5, 4, NULL);

INSERT INTO @Table2 ([b_id], [title])
VALUES (3, 'Value3')
      ,(4, 'Value4')
      ,(5, 'Value 5')
      ,(8, 'Value 8')
      ,(10, 'Value');

SELECT T2.[title]
      ,COUNT(*)
FROM
(
    SELECT [b_id1]
    FROM @Table1
    UNION ALL
    SELECT [b_id2]
    FROM @Table1
    UNION ALL
SELECT [b_id3]
FROM @Table1
UNION ALL
SELECT [b_id4]
FROM @Table1
) DS
LEFT JOIN @Table2 T2
    ON DS.[b_id1] = T2.[b_id]
GROUP BY T2.[title];

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章