【发布时间】:2013-03-01 16:20:46
【问题描述】:
我有一个如下所示的选择:
SELECT
ReportingDate
, PortfolioID
, PortfolioNme
, CASE
WHEN @ReportType = 'GeoCountry' THEN Infoportal.dbo.fn_Generic_ProperCase(Country)
WHEN @ReportType = 'GeoEquity' THEN Region
END AS Country
, RANK() OVER (PARTITION BY PortfolioID ORDER BY SUM(Percentage) DESC, CASE WHEN @ReportType = 'GeoCountry' THEN Country WHEN @ReportType = 'GeoEquity' THEN Region END) AS [Rank]
, SUM(Percentage) AS [Weight]
FROM @Worktable as WT
WHERE WT.IssueType1 <> '010' AND WT.IssueType2 <> '055'
GROUP BY WT.ReportingDate
, WT.PortfolioID
, WT.PortfolioNme
, CASE
WHEN @ReportType = 'GeoCountry' THEN WT.Country
WHEN @ReportType = 'GeoEquity' THEN WT.Region
END
我要做的是根据@ReportType 按国家或地区分组,并显示百分比和排名的总和。
但是我不断收到错误:
消息 8120,第 16 层,状态 1,第 349 行
列“@Worktable.Country”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
消息 8120,第 16 层,状态 1,第 350 行
列“@Worktable.Region”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
这太容易了,真的让我很烦。非常感谢您的帮助。
谢谢
【问题讨论】:
标签: sql-server tsql group-by case common-table-expression