0

我对一些派生表有一些疑问,希望有人能够提供帮助。我得到的是选择语句中的 2 个派生表,然后使用枢轴水平而不是垂直显示结果。

到目前为止,我得到的是:

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 *.

有人对出了什么问题有任何想法吗?

谢谢

亚历克斯

4

1 回答 1

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
于 2013-02-18T16:38:17.347 回答