尝试从上一年获取数据,而不管它是否是a年。

2020-09-10 23:52发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我将SQL Server 201...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我将SQL Server 2012与我们的ERP SAP Business One一起使用,我发现某些年份可能是a年。 现在,我尝试使用静态日期来查看是否可以取得上一年的销售额。 在ERP中,我将用一个特殊的变量替换日期,最终用户可以选择日期。 但是在SQL Manager中运行代码

时出现此错误

"消息402,级别16,状态1,行3
数据类型varchar和varchar在减法运算符中不兼容。"

 SELECT YEAR(getdate())-1为'Year',(SELECT ISNULL(SUM(DocTotal-VatSum),0)
 从OINV T0
 T0.DocDate> =(CONVERT(decimal(10,2),'2019-03-01')-案例
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4 = 0.00)
 然后" 366"
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4!= 0.00)
 然后
 '365'
 否则为'0'
 END)和T0。[DocDate] <='2019-03-31'-CASE
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4 = 0.00)
 然后" 366"
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4!= 0.00)
 然后
 '365'
 否则为'0'
 END AND DocCur ='$')-
 (SELECT ISNULL(SUM(DocTotal-VatSum),0)
 从ORIN T1
 在'2019-03-01'之间的T1.DocDate-案例
 当(CONVERT(decimal(10,2),YEAR(T1。[DocDate]))%4 = 0.00)
 然后" 366"
 当(CONVERT(decimal(10,2),YEAR(T1。[DocDate]))%4!= 0.00)
 然后
 '365'
 否则为'0'
 结束和'2019-03-31'-案例
 当(CONVERT(decimal(10,2),YEAR(T1。[DocDate]))%4 = 0.00)
 然后" 366"
 当(CONVERT(decimal(10,2),YEAR(T1。[DocDate]))%4!= 0.00)
 然后
 '365'
 否则为'0'
 END AND DocCur ='$')AS'Total CND Sales',

 (SELECT ISNULL(SUM(DocTotalFC-VatSumFC),0)
 从OINV T0
 在'2019-03-01'之间的T0.DocDate-案例
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4 = 0.00)
 然后" 366"
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4!= 0.00)
 然后
 '365'
 否则为'0'
 结束和'2019-03-31'-案例
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4 = 0.00)
 然后" 366"
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4!= 0.00)
 然后
 '365'
 否则为'0'
 END AND DocCur ='USD')-
 (SELECT ISNULL(SUM(DocTotalFC-VatSumFC),0)
 从ORIN T1
 在'2019-03-01'之间的T1.DocDate-案例
 当(CONVERT(decimal(10,2),YEAR(T1。[DocDate]))%4 = 0.00)
 然后" 366"
 当(CONVERT(decimal(10,2),YEAR(T1。[DocDate]))%4!= 0.00)
 然后
 '365'
 否则为'0'
 结束和'2019-03-31'-案例
 当(CONVERT(decimal(10,2),YEAR(T1。[DocDate]))%4 = 0.00)
 然后" 366"
 当(CONVERT(decimal(10,2),YEAR(T1。[DocDate]))%4!= 0.00)
 然后
 '365'
 否则为'0'
 END AND DocCur ='USD')作为"美国总销售量",

 (选择总和(税总和)
 从OINV T0
 内联接INV4 T1在T1.DocEntry = T0.DocEntry和staType = 2
 在'2019-03-01'之间的T0.DocDate-案例
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4 = 0.00)
 然后" 366"
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4!= 0.00)
 然后
 '365'
 否则为'0'
 结束和'2019-03-31'-案例
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4 = 0.00)
 然后" 366"
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4!= 0.00)
 然后
 '365'
 否则为'0'
 结束) -
 (选择总和(税总和)
 从ORIN T0
 内连接RIN4 T1开启T1.DocEntry = T0.DocEntry AND staType = 2
 在'2019-03-01'之间的T0.DocDate-案例
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4 = 0.00)
 然后" 366"
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4!= 0.00)
 然后
 '365'
 否则为'0'
 结束和'2019-03-31'-案例
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4 = 0.00)
 然后" 366"
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4!= 0.00)
 然后
 '365'
 否则为'0'
 END)作为"总消费税",

 (选择总和(税总和)
 从OINV T0
 内联接INV4 T1上T1.DocEntry = T0.DocEntry AND staType = 1
 在'2019-03-01'之间的T0.DocDate-案例
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4 = 0.00)
 然后" 366"
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4!= 0.00)
 然后
 '365'
 否则为'0'
 结束和'2019-03-31'-案例
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4 = 0.00)
 然后" 366"
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4!= 0.00)
 然后
 '365'
 否则为'0'
 结束) -
 (选择总和(税总和)
 从ORIN T0
 内联接RIN4 T1开启T1.DocEntry = T0.DocEntry AND staType = 1
 在'2019-03-01'之间的T0.DocDate-案例
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4 = 0.00)
 然后" 366"
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4!= 0.00)
 然后
 '365'
 否则为'0'
 结束和'2019-03-31'-案例
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4 = 0.00)
 然后" 366"
 当(CONVERT(decimal(10,2),YEAR(T0。[DocDate]))%4!= 0.00)
 然后
 '365'
 否则为'0'
 END)作为"总PST" 
2条回答
DafaDDDa
2020-09-11 00:41

嗨乔纳森(Jonathan),

发生错误是因为您使用了" 0"," 365"和" 366"

请使用0、365和 366

问候,

Johan

PS DocDate> = DATEADD(year,-1,GETDATE())也应该起作用。

一周热门 更多>