View SQL:在使用sum SET NOCOUNT*的视图中使用日期日历问题关键字“SET”附近的语法不正确*

View SQL:在使用sum SET NOCOUNT*的视图中使用日期日历问题关键字“SET”附近的语法不正确*,view,calendar,set,nocount,View,Calendar,Set,Nocount,我为我代码中的混乱道歉,我自学成才,通过尝试、错误和阅读/掠夺这里的东西来学习 我制造了一个怪物,它做的正是它想要做的,但是我不能把它放到一个视图中。在其中,我使用日历生成一组相关日期,然后将本地金额相加,以创建从这里开始的每月变动。这一位是我得到错误的地方,因为它给了我一个集合的语法错误 在没有创建视图位的情况下运行前四行,如果对象等生成正确的结果,我只需要能够将其放入视图中 有没有一种方法可以修复它,或者我在获得正确的结果时走得太远了,以至于无法将其放到视图中 不反对把它分成两个视图或什么的

我为我代码中的混乱道歉,我自学成才,通过尝试、错误和阅读/掠夺这里的东西来学习

我制造了一个怪物,它做的正是它想要做的,但是我不能把它放到一个视图中。在其中,我使用日历生成一组相关日期,然后将本地金额相加,以创建从这里开始的每月变动。这一位是我得到错误的地方,因为它给了我一个集合的语法错误

在没有创建视图位的情况下运行前四行,如果对象等生成正确的结果,我只需要能够将其放入视图中

有没有一种方法可以修复它,或者我在获得正确的结果时走得太远了,以至于无法将其放到视图中

不反对把它分成两个视图或什么的。我只需要相同的输出。甚至不需要那么快

代码:

IF OBJECT_ID('dbo.LeeroyJenkins', 'V') IS NOT NULL
DROP VIEW dbo.LeeroyJenkins
GO
CREATE VIEW dbo.LeeroyJenkins AS


SET NOCOUNT ON

DECLARE @Calendar TABLE (DETAIL DATETIME NOT NULL)
DECLARE @date DATETIME, @max_date DATETIME

SELECT @date = EOMONTH(MIN(DETAIL.CASHPOST)), @max_date = MAX(EOMONTH(DETAIL.CASHPOST)) FROM DETAIL
WHILE (@date <= @max_date)
BEGIN
INSERT INTO @Calendar (DETAIL) VALUES (@date)
SELECT @date = DATEADD(dy, 1, @date)
END



SELECT

EOMONTH(C.DETAIL) AS DATE,
FD.sCode AS YARDICODE,
(A.SCODE + A.SDESC) AS ACCOUNTCODE,
CASE WHEN D.HTRANCURRENCY = 0 THEN CL.SCODE ELSE CL2.SCODE END AS CURRENCYCODE,
CASE WHEN SUM(D.STRANAMOUNT) = 0 THEN 0 ELSE SUM(D.STRANAMOUNT) END AS BALANCE,
CASE WHEN SUM(D.STRANAMOUNT) = 0 THEN 1 WHEN SUM(D.SAMOUNT) =0 THEN 1 ELSE CAST(SUM(D.SAMOUNT) / SUM(D.STRANAMOUNT) AS DEC(21,6)) END AS FXRATE
/* CASE WHEN SUM( D.SAMOUNT) = 0 THEN 0 ELSE SUM(D.SAMOUNT) END AS BASEBALANCE, */



FROM

@Calendar C
INNER JOIN DETAIL D ON
D.CASHPOST <= C.DETAIL AND
D.CASHPOST >= C.DETAIL
INNER JOIN ACCT A ON D.HACCT = A.HMY
INNER JOIN TRANS TR ON TR.HMY = D.HINVORREC
/*LEFT JOIN ( SELECT 1000 BOOK, 'BOTH' BOOKNAME UNION ALL SELECT BOOK, BOOKNAME FROM UL_BOOKS ) BK ON BK.BOOK = TR.ITYPE2    THIS IS WHERE WE CAN FILTER ACCOUNT CODES */
LEFT OUTER JOIN INTPROP INP ON D.HPROP = INP.HPROP
LEFT JOIN INTCURRENCY_INFO CL ON CL.HMY = INP.HCURRENCY                 
LEFT JOIN INTCURRENCY_INFO CL2 ON CL2.HMY = D.HTRANCURRENCY         
INNER JOIN PROPERTY FD ON FD.HMY = D.HPROP 


WHERE  tr.itype = 10

GROUP BY 
C.DETAIL,
FD.SCODE,
A.SCODE,                            /*ALL THESE CODES CAN BE REMOVED AND JUST USE CURRENCY ONCE SET*/
A.SDESC,
D.HTRANCURRENCY,
CL.SCODE,
CL2.SCODE,

CASE WHEN D.HTRANCURRENCY = 0 THEN CL.SCODE ELSE CL.SCODE END