我仍然是一个初学者与T-SQL有什么是一个相对简单的选择语句与几个联接。我试图把它放到一个动态数据透视表中。本声明的目的在于展示非营利性服务及其结果,新旧结果仅仅是同一数据的不同词汇。试图找出如何做一个动态的数据透视表与连接
SELECT Service.Name,
OutcomeIndicator."Desc" AS OutcomeDesc,
NewOutcomeIndicator.Description As NewOutcomeDesc
FROM service
FULL OUTER JOIN OutcomeIndicator ON ServiceOutcomeIndicator.OutcomeIndicatorID=OutcomeIndicator.OutcomeIndicatorID
FULL OUTER JOIN NewOutcomeIndicator ON NewOutcomeIndicatorMapping.NewOutcomeIndicatorID=NewOutcomeIndicator.NewOutcomeIndicatorID
然而,当我运行这个说法,它显然返回的每一行,包括对服务名称的多个值,因为每个服务可以有多种结果/ NewOutcome配对。
+-------------+----------------+------------------+
| ServiceName | OutcomeDesc1 | NewOutcomeDesc1 |
+-------------+----------------+------------------+
| Service34 | OutcomeDesc14 | NewOutcomeDesc14 |
| Service34 | OutcomeDesc12 | NewOutcomeDesc12 |
| Service35 | OutcomeDesc4 | NewOutcomeDesc4 |
| Service44 | OutcomeDesc80 | NewOutcomeDesc80 |
| Service44 | OutcomeDesc99 | NewOutcomeDesc99 |
| Service51 | OutcomeDesc50 | NewOutcomeDesc50 |
为报告的目的,因为这是被复制到Excel中,我希望更多的东西是这样的:
+--------------+-----------------+-------------------+-----------------+-------------------+--------------+---------------------+
| ServiceName | OutcomeDesc1 | NewOutcomeDesc1 | OutcomeDesc2 | NewOutcomeDesc2 | OutcomeDesc3 | NewOutcomeDesc3 |
+--------------+-----------------+-------------------+-----------------+-------------------+--------------+---------------------+
| Service34 | OutcomeDesc14 | NewOutcomeDesc14 | OutcomeDesc12 | NewOutcomeDesc12 | | |
| Service35 | OutcomeDesc4 | NewOutcomeDesc4 | | | | |
| Service44 | OutcomeDesc80 | NewOutcomeDesc80 | OutcomeDesc99 | NewOutcomeDesc99 | | |
| Service51 | OutcomeDesc50 | NewOutcomeDesc50 | | | | |
+--------------+-----------------+-------------------+-----------------+-------------------+--------------+---------------------+
如何,我可以改变我的SQL语句来做到这一点任何想法?我可以静态定义列的数量,因为我知道每个服务的结果不会超过3个。
我知道如何在sql中创建一个静态数据透视表,但由于有数百个服务和结果,我无法定义统计分配每个服务值到列的逻辑。动态数据透视表对我而言也有点难以理解,但我还没有找到一个能够做到这一点的教程,同时还包括了一个联合声明。
任何帮助表示赞赏。
,因为你知道的列数事先不需要动态支点。当您根据表中的值创建列时,将使用动态数据透视表。 –