Sql 透视数据以获得所需的端视图

Sql 透视数据以获得所需的端视图,sql,sql-server,pivot-table,Sql,Sql Server,Pivot Table,我的数据在数据库表中 SELECT [Quote Reference Number] ,[Value] ,[Method] ,[Country] ,[SubRegion] ,[Route 1 or Route2] ,[TYPE A or B ] FROM Table 1 我想要的摘要视图 世界观 Subregion | Country | Count of Route1 + Type A quotes | Coun

我的数据在数据库表中

SELECT [Quote Reference Number] 
      ,[Value]
      ,[Method]
      ,[Country]
      ,[SubRegion]
      ,[Route 1 or Route2]
      ,[TYPE A or B ]
  FROM Table 1 
我想要的摘要视图

世界观

Subregion | Country | Count of Route1 + Type A quotes | Count of Route1 + Type B quotes|  Count of Route2 + Type A quotes | Count of Route2 + Type B quotes| All Routes & Types |
欧洲、中东和非洲视图

Subregion | Country | Count of Route1 + Type A quotes | Count of Route1 + Type B quotes| Count of Route2 + Type A quotes | Count of Route2 + Type B quotes| All Routes & Types |
我可以通过创建一个包含两行的表来完成这项工作,只需执行大量sql查询来填充所有字段,但被告知可以通过在数据库中旋转来完成,但不知道具体如何完成


有人能提供一些帮助吗?

在这种情况下,Pivot将很困难(但并非不可能),因为。。。在中,子句分别包含一个字段和一组值,而不是条件语句。你最好使用
和/格

SELECT 
      [Country]
      ,[SubRegion]
      ,SUM (CASE WHEN [Route 1 or Route2] = 'Route1' AND [TYPE A or B ] = 'A' 
             THEN 1 ELSE 0 END)
              as [Count of Route1 + Type A quotes ]
      ,SUM (CASE WHEN [Route 1 or Route2] = 'Route1' AND [TYPE A or B ] = 'B' 
             THEN 1 ELSE 0 END)
              as [Count of Route1 + Type B quotes ]
     ,SUM (CASE WHEN [Route 1 or Route2] = 'Route2' AND [TYPE A or B ] = 'A' 
             THEN 1 ELSE 0 END)
              as [Count of Route2 + Type A quotes ]
      ,SUM (CASE WHEN [Route 1 or Route2] = 'Route2' AND [TYPE A or B ] = 'B' 
             THEN 1 ELSE 0 END)
              as [Count of Route2 + Type B quotes]
      ,COUNT(*)  All Routes & Types
  FROM [Table 1]
  GROUP BY
       [Country]
      ,[SubRegion]

我认为你的方法是正确的。测试了一下,我觉得不错!