SQL Group By / Count: Count Same Values Across Multiple Columns?

后端 未结 2 1919
Happy的楠姐
Happy的楠姐 2021-01-25 04:33

I\'m trying to figure out how to write a query that counts values across multiple columns, with the result table having a count in each column for every possible value of an

2条回答
  •  轮回少年
    2021-01-25 05:00

    Probably not the most efficient but this works.

        ;WITH data
    AS
    (
        SELECT 'a' AS p1, 'b' AS p2, 'a' AS p3
        UNION ALL
        SELECT 'a', 'a','a'
        UNION ALL
        SELECT 'b','b','b'
        UNION ALL
        SELECT 'a','b','b'
    )
    SELECT
        p_one.value AS header,
        p1,
        p2,
        p3
    FROM (SELECT
              p1 AS value,
              count(*) AS p1
          FROM data d
          GROUP BY p1) p_one
    left JOIN (SELECT
                p2 AS value,
                count(*) AS p2
                FROM data d
                GROUP BY p2) p_two
        ON p_two.value = p_one.value
    left JOIN (SELECT
                p3 AS value,
                count(*) AS p3
                FROM data d
                GROUP BY p3) p_three
        ON p_two.value = p_three.value
    

提交回复
热议问题