我有这个 View
-----------------------------------
ID 1stChoice 2Choice 3rdChoice
-----------------------------------
1 - AA - BB - CC
2 - CC - BB - AA
3 - AA - CC - BB
4 - BB - AA - CC
5 - AA - CC - BB
并且我需要显示一个字段被选择为 1stChoice、2ndChoice 和 3rdChoice
的次数的报告。
我试过这个查询,它非常适合单列
select 1stChoice,COUNT(*) as 'Count' from myView group by 1stChoice;
1stChoice - Count
-----------------
AA - 3
BB - 1
CC - 1
但这就是我希望输出的样子
------------------------------------
Field -1stChoice 2Choice 3rdChoice
------------------------------------
AA - 3 - 1 - 1
BB - 1 - 2 - 2
CC - 1 - 2 - 2
有没有一种方法可以在不编写 select 1stChoice,COUNT(*) as 'Count' from myView group by 1stChoice;
的情况下实现此目的?对于 View 中的每一列?
我看过Select multiple counts from one database table in one sql command access和其他人,但他们都没有解决我的问题。
最佳答案
使用枢轴的例子;
SELECT [ChosenValue], [pvt].[1stChoice], pvt.[2ndChoice], pvt.[3rdChoice]
FROM (
SELECT Id, '1stChoice' Choice, [1stChoice] [ChosenValue]
FROM MyView
UNION
SELECT Id, '2ndChoice' Choice, [2ndChoice]
FROM MyView
UNION
SELECT Id, '3rdChoice' Choice, [3rdChoice]
FROM MyView
) AS tbl
PIVOT (
COUNT(Id)
FOR Choice IN ([1stChoice], [2ndChoice], [3rdChoice])
) as pvt
结果;
ChosenValue 1stChoice 2ndChoice 3rdChoice
AA 3 1 1
BB 1 2 2
CC 1 2 2
关于c# - 如何选择多列的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54438788/