【发布时间】:2010-12-23 17:19:05
【问题描述】:
ALTER PROCEDURE [dbo].[MyStoredProcedure1]
@YearToGet int
AS
Select Division, SDESCR,
DYYYY,
Sum(APRICE) ASofSales,
Sum(PARTY) AS ASofPAX,
Sum(NetAmount) ASofNetSales,
Sum(InsAmount) ASofInsSales,
Sum(CancelRevenue) ASofCXSales,
Sum(OtherAmount) ASofOtherSales,
Sum(CXVALUE) ASofCXValue
From dbo.B101BookingsDetails
Where Booked <= CONVERT(int,DateAdd(year, @YearToGet - Year(getdate()),
DateAdd(day, DateDiff(day, 1, getdate()), 0) ) ) and
(DYYYY = @YearToGet)
Group By SDESCR, DYYYY, Division
Having (DYYYY = @YearToGet)
Order By Division, SDESCR, DYYYY
union all
SELECT
DIVISION,
SDESCR,
DYYYY,
SUM(APRICE) AS YESales,
SUM(PARTY) AS YEPAX,
SUM(NetAmount) AS YENetSales,
SUM(InsAmount) AS YEInsSales,
SUM(CancelRevenue) AS YECXSales,
SUM(OtherAmount) AS YEOtherSales,
SUM(CXVALUE) AS YECXValue
FROM dbo.B101BookingsDetails
Where (DYYYY=@YearToGet)
GROUP BY SDESCR, DYYYY, DIVISION
ORDER BY DIVISION, SDESCR, DYYYY
我得到的错误是
消息 156,级别 15,状态 1,程序 MyStoredProcedure1,第 36 行不正确 关键字“union”附近的语法。
但我的目标是用户输入一年,例如 2009 年,我的第一个查询将获取 2009 年到昨天 2009 年 12 月 23 日同一日期的所有销售额,而第二个查询将获取 2009 年的总数截至 2009 年 12 月 31 日。
我希望列并排而不是在一列中
【问题讨论】:
-
你得到的错误信息是?你的问题是???
-
当你试图将它们与
UNION ALL组合在一起时,我认为你不能在你的部分SELECT上使用ORDER BY;尝试从第一个SELECT中删除ORDER BY- 那么它可以工作吗? -
你是对的,marc 但由于某种原因,所有内容都显示在同一列中,例如 YESales 和 AsofSales 仍在同一列下
-
您确定要在此处使用联合吗?您真的希望该过程返回两个单独的记录集吗?
-
如果它返回两个单独的记录集,它在网格视图中是如何工作的
标签: sql-server sql-server-2005 stored-procedures