将X个行数转换为列数以进行SQL计数

将X个行数转换为列数以进行SQL计数,sql,dynamic,transpose,Sql,Dynamic,Transpose,我有一个数据集,每个客户有多个记录。每行有一个型号。我想将集合中的所有型号转换为列,以计算每个客户拥有的型号数量以及总数。我现在可以通过硬编码型号来做到这一点,但我更希望这是一个动态的,随着相机型号的增加或减少而增长。任何帮助或见解都将不胜感激 起始表: Customer # Model# Mac # 123 Cam320 1234bbfgdv 123 Cam320 12567fkrl4 453 Cam110

我有一个数据集,每个客户有多个记录。每行有一个型号。我想将集合中的所有型号转换为列,以计算每个客户拥有的型号数量以及总数。我现在可以通过硬编码型号来做到这一点,但我更希望这是一个动态的,随着相机型号的增加或减少而增长。任何帮助或见解都将不胜感激

起始表:

Customer #    Model#    Mac #
123           Cam320     1234bbfgdv
123           Cam320     12567fkrl4
453           Cam110     574446nng3
453           Cam880     578455mmh3
453           Cam320     445445rtsy
输出

Customer #  Cam110  Cam320    Cam880   Total
123           0        2         0      2
453           1        1         1      3

尽管这可以通过PIVOT函数使用T-SQL完成,但最好将此功能留给报表引擎。SQL Server是为存储数据而构建的,不一定要显示数据,而最终的合计将很难实现动态。该数据集已经非常适合SSRS报告。我建议尝试SSR。但是,如果您决定使用T-SQL,请查看本文

Mike认为,可以使用PIVOT创建动态SQL,以使列数随模型动态增长,但这会改变表的模式,从而导致任何使用它的东西出现下游问题。这对于可视化工具更合适。