点击此处---> 群内免费提供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"
尊敬的Johnathan Brotto,
除了提到的 Johan Hakkesteegt 之外,您还正在将DATE类型与小数进行比较 。 那将返回错误。 如果您想保持查询的状态不变,我调整了SQL的某些部分以确保数据类型正常工作。 只要确保比较中的值有意义即可。 这是下面的修改后的查询。
此致
Varnavas Eleftheriou
嗨乔纳森(Jonathan),
发生错误是因为您使用了" 0"," 365"和" 366"
请使用0、365和 366
问候,
Johan
PS DocDate> = DATEADD(year,-1,GETDATE())也应该起作用。
一周热门 更多>