Проблема SQL Server PIVOT - PullRequest
       1

Проблема SQL Server PIVOT

0 голосов
/ 23 июня 2011

За свою жизнь я не вижу, что я делаю здесь неправильно.

SELECT Series_ID
       , 1 AS Jan
       , 2 AS Feb
       , 3 AS Mar
       , 4 AS Apr
       , 5 AS May
       , 6 AS Jun
       , 7 AS Jul
       , 8 AS Aug
       , 9 AS Sep
       , 10 AS Oct
       , 11 AS Nov
       , 12 AS [Dec]
FROM 
  (
    SELECT MONTH(ActionDate_DT) AS [MonthNum]
         , Series_ID
         , ID
      FROM TasksSeries_V
     WHERE Series_ID IN (5632751,5672397,5680669,5680670,5632713,5632752,5680902)
           AND  TasksSeries_V.ActionDate_DT BETWEEN '01 Jan 2011' AND '31 Dec 2011'
  ) AS SourceTable
PIVOT 
  (
COUNT(ID) FOR MonthNum IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])
  ) AS pvt   

Когда я запускаю это, я просто получаю

ID      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
5632713 1   2   3   4   5   6   7   8   9   10  11  12
5632751 1   2   3   4   5   6   7   8   9   10  11  12
5632752 1   2   3   4   5   6   7   8   9   10  11  12
5672396 1   2   3   4   5   6   7   8   9   10  11  12
5672397 1   2   3   4   5   6   7   8   9   10  11  12
5680669 1   2   3   4   5   6   7   8   9   10  11  12
5680670 1   2   3   4   5   6   7   8   9   10  11  12
5680902 1   2   3   4   5   6   7   8   9   10  11  12

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 23 июня 2011

Мне кажется, проблема в том, что в первом операторе SELECT вы должны использовать [1] вместо 1 для имен столбцов ..

SELECT Series_ID
       , [1] AS Jan
       , [2] AS Feb
       , [3] AS Mar
       , [4] AS Apr
       , [5] AS May
       , [6] AS Jun
       , [7] AS Jul
       , [8] AS Aug
       , [9] AS Sep
       , [10] AS Oct
       , [11] AS Nov
       , [12] AS [Dec]
FROM 
  (
    SELECT MONTH(ActionDate_DT) AS [MonthNum]
         , Series_ID
         , ID
      FROM TasksSeries_V
     WHERE Series_ID IN (5632751,5672397,5680669,5680670,5632713,5632752,5680902)
           AND  TasksSeries_V.ActionDate_DT BETWEEN '01 Jan 2011' AND '31 Dec 2011'
  ) AS SourceTable
PIVOT 
  (
      COUNT(ID) 
        FOR MonthNum IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])
  ) AS pvt   
0 голосов
/ 23 июня 2011

Строка

SELECT Series_ID, 1 AS Jan, 2 AS Feb, 3 AS Mar, 4 AS Apr, 5 AS May, 6 AS Jun, 7 AS Jul, 8 AS Aug, 9 AS Sep, 10 AS Oct, 11 AS Nov, 12 AS [Dec]

Указывает, что мы должны выбрать литеральное значение 1 и псевдоним как Jan, литеральное значение 2 и псевдоним как февраль ... Вместо этого ссылаться на столбец с именем 1, заключив в квадратные скобкиили двойные кавычки

SELECT Series_ID, [1] AS Jan, [2] AS Feb, [3] AS Mar, [4] AS Apr, [5] AS May, [6] AS Jun, [7] AS Jul, [8] AS Aug, [9] AS Sep, [10] AS Oct, [11] AS Nov, [12] AS [Dec]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...