【发布时间】:2013-02-28 21:57:59
【问题描述】:
这需要在 SQL Server 2005 和 2008 中工作,而无需调整兼容性级别(如果可以的话)
Select
CASE GROUPING([Store ID]) WHEN 1 THEN '[Store ID]' ELSE [Store ID] END [Store ID],
CASE GROUPING([Cashier]) WHEN 1 THEN '[Cashier]' ELSE [Cashier] END [Cashier],
CASE GROUPING([Register]) WHEN 1 THEN '[Register]' ELSE [Register] END [Register],
sum([Amex]) AS [Amex],
sum([C.Card]) AS [C.Card],
sum([Cash]) AS [Cash],
sum([House Acct]) AS [House Acct],
sum([MasterCard]) AS [MasterCard],
sum([Str Cr]) AS [Str Cr],
sum([Visa/MC]) AS [Visa/MC]
from
#a13
group by
[Store ID],
[Cashier],
[Register]
with rollup
这会返回:
如何调整代码以不实际显示卷起的行?意思是删除最后 3 行或其中带有 [ ] 的任何内容。我需要在 SQL 2005 中使用 Rollup,以便可以使用 case grouping。
【问题讨论】:
-
你有没有尝试过?
-
我不知道该怎么做。无法使用
GROUPING SETS(()),因为2005不支持(或者需要将兼容性调整到90我做不到,忘记了我不能使用它的实际原因)。我可以删除WITH ROLLUP,它可以在 2008 年使用,但 2005 年需要它。
标签: sql-server-2008 sql-server-2005 rollup