2013-02-18 1 views
0

У меня возникла проблема с некоторыми производными таблицами, на которых я надеюсь, что кто-то сможет помочь. У меня есть 2 производных таблицы внутри оператора select, который затем использует точку поворота для отображения результатов по горизонтали, а не по вертикали.Ссылочные поля SQL Server в производной таблице с объединениями

То, что я получил до сих пор:

SELECT * FROM(
SELECT SUM(Value) AS TotDays, ClassId FROM MainTable GROUP BY ClassId) 
Union All 
SELECT SUM(NumDays) As TotDays, ClassId FROM (
SELECT CASE WHEN COUNT(SiteId) > 0 THEN 1 ELSE 0 END AS NumDays 
    FROM Table2 GROUP BY ClassId) as SUB 
) AS a 
PIVOT (SUM(TotDays) FROM ClassId 
    IN ([12],[13],[14],[15] 

То, что я пытаюсь сделать, это ссылка на отдельные столбцы, а не с помощью SELECT *, но я не знаю, как это сделать. Я могу заставить его работать, если я не отброшу все из союза, но когда я вложу союз в него, это не сработает, и я должен использовать SELECT *.

У кого-нибудь есть идеи о том, что происходит не так?

Благодаря

Alex

ответ

0

У вас есть несколько ошибок в вашем запросе. Например, у вашего UNION ALL есть наборы с различным количеством столбцов, и у вас есть другие синтаксические ошибки. Попробуйте так:

SELECT [12],[13],[14],[15] 
FROM ( SELECT SUM(Value) AS TotDays, ClassId 
     FROM MainTable 
     GROUP BY ClassId 
     UNION ALL 
     SELECT SUM(NumDays) As TotDays, ClassId 
     FROM ( SELECT CASE WHEN COUNT(SiteId) > 0 THEN 1 ELSE 0 END NumDays, 
         ClassId 
       FROM Table2 
       GROUP BY ClassId) as SUB 
    ) AS a 
PIVOT (SUM(TotDays) FROM ClassId IN ([12],[13],[14],[15])) AS PT