我试图弄清楚如何编写一个查询多个列中的值的查询,结果表在每个列中对 任何 列的每个可能值都有一个计数。
示例:说我有 mytable
Source data table: P1 P2 P3 ----------- a b a a a a b b b a b b
我想要一个查询,在每列中计算a和b,产生类似以下内容的结果:
Desired query output: P1 P2 P3 ------------- a | 3 1 2 b | 1 3 2
我知道我可以通过 group by 轻松地对单个列执行此操作:
select P1, count(*) as mycounts from mytable group by P1
但是是否可以对 每一 列都执行此操作?
我正在使用SQL Server 2008(T-SQL)。在此先感谢您的帮助!
也许是这样的:
首先是一些测试数据:
DECLARE @tbl TABLE(P1 VARCHAR,P2 VARCHAR,P3 VARCHAR) INSERT INTO @tbl SELECT 'a','b','a' UNION ALL SELECT 'a','a','a' UNION ALL SELECT 'b','b','b' UNION ALL SELECT 'a','b','b'
然后是一个像这样的枢轴:
SELECT * FROM ( SELECT 'P1' AS P, P1 AS PValue,P1 AS test FROM @tbl UNION ALL SELECT 'P2',P2,P2 FROM @tbl UNION ALL SELECT 'P3',P3,P3 FROM @tbl ) AS p PIVOT ( COUNT(PValue) FOR P IN ([P1],[P2],[P3]) ) AS pvt
这是有关枢轴和非枢轴的更多信息