SQL-每列显示特定范围的结果?
我正试图在SAP内部创建一个销售矩阵 我想要运行的SQL报告非常基本。它涉及以下方面:SQL-每列显示特定范围的结果?,sql,sql-server,tsql,date,Sql,Sql Server,Tsql,Date,我正试图在SAP内部创建一个销售矩阵 我想要运行的SQL报告非常基本。它涉及以下方面: SELECT T1.ItemCode, SUM(T1.Quantity) FROM OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry WHERE ItemCode IS NOT NULL AND CardCode = 'C001500' GROUP BY T1.ItemCode ORDER BY
SELECT
T1.ItemCode, SUM(T1.Quantity)
FROM
OINV T0
INNER JOIN
INV1 T1 ON T0.DocEntry = T1.DocEntry
WHERE
ItemCode IS NOT NULL
AND CardCode = 'C001500'
GROUP BY
T1.ItemCode
ORDER BY
T1.ItemCode
我想把SUM(t1.quantity)
字段分解为几个星期,但我不太明白如何将其分解
我想要Current Week
,它将是Getdate()
和Getdate()+7
之间的daterange
,然后是Getdate()+8到Getdate()+14`等等。。。这将持续12周
谢谢你的帮助
AndyHAHA SQL中有一个WEEK()
函数(我假设您正在与SAP一起使用)。在该计算值上添加一个额外的GROUP BY
,应该可以做到这一点
如果您使用的是mySAP,那么它就是SQL Server,DATEPART
就是您想要的
我现在已经编写了这段代码,但是总数T1.Quantity不是总和。我看到AHV16在第5周销售1件商品,然后另一个实例AHV16在第2周销售一件商品。第1-12周AHV 16显示为空,第12周总计显示为1(第2周+第5周)
SELECT T1.ItemCode
, '12 Week Total' = (SELECT sum(T1.Quantity) WHERE (T0.DocDate>=DateAdd(Day,-84,Getdate()) AND T0.DocDate<=DateAdd(D,0,Getdate())))
, 'Current Week' = (SELECT sum(T1.Quantity) WHERE (T0.DocDate>=DateAdd(Day,-7,Getdate()) AND T0.DocDate<=DateAdd(D,0,Getdate())))
, 'Week 2' = (SELECT sum(T1.Quantity) WHERE (T0.DocDate>=DateAdd(Day,-14,Getdate()) AND T0.DocDate<=DateAdd(D,-8,Getdate())))
, 'Week 3' = (SELECT sum(T1.Quantity) WHERE (T0.DocDate>=DateAdd(Day,-21,Getdate()) AND T0.DocDate<=DateAdd(D,-15,Getdate())))
, 'Week 4' = (SELECT sum(T1.Quantity) WHERE (T0.DocDate>=DateAdd(Day,-28,Getdate()) AND T0.DocDate<=DateAdd(D,-22,Getdate())))
, 'Week 5' = (SELECT sum(T1.Quantity) WHERE (T0.DocDate>=DateAdd(Day,-35,Getdate()) AND T0.DocDate<=DateAdd(D,-29,Getdate())))
, 'Week 6' = (SELECT sum(T1.Quantity) WHERE (T0.DocDate>=DateAdd(Day,-42,Getdate()) AND T0.DocDate<=DateAdd(D,-36,Getdate())))
, 'Week 7' = (SELECT sum(T1.Quantity) WHERE (T0.DocDate>=DateAdd(Day,-49,Getdate()) AND T0.DocDate<=DateAdd(D,-43,Getdate())))
, 'Week 8' = (SELECT sum(T1.Quantity) WHERE (T0.DocDate>=DateAdd(Day,-56,Getdate()) AND T0.DocDate<=DateAdd(D,-50,Getdate())))
, 'Week 9' = (SELECT sum(T1.Quantity) WHERE (T0.DocDate>=DateAdd(Day,-63,Getdate()) AND T0.DocDate<=DateAdd(D,-57,Getdate())))
, 'Week 10' = (SELECT sum(T1.Quantity) WHERE (T0.DocDate>=DateAdd(Day,-70,Getdate()) AND T0.DocDate<=DateAdd(D,-64,Getdate())))
, 'Week 11' = (SELECT sum(T1.Quantity) WHERE (T0.DocDate>=DateAdd(Day,-77,Getdate()) AND T0.DocDate<=DateAdd(D,-71,Getdate())))
, 'Week 12' = (SELECT sum(T1.Quantity) WHERE (T0.DocDate>=DateAdd(Day,-84,Getdate()) AND T0.DocDate<=DateAdd(D,-78,Getdate())))
FROM OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry
WHERE ItemCode IS NOT NULL and CardCode = 'C001500'
GROUP BY T1.ItemCode, T0.Docdate
Order By T1.ItemCode
选择T1.ItemCode
,“12周总计”=(选择总和(T1.Quantity),其中(T0.DocDate>=DateAdd(Day,-84,Getdate())和T0.DocDate=DateAdd(Day,-7,Getdate())和T0.DocDate=DateAdd(Day,-14,Getdate())和T0.DocDate=DateAdd(Day,-21,Getdate())和T0.DocDate=date(Day,-,-28,Getdate())和T0.DocDate=date(Day,-,-35,Getdate())和T0.DocDate=date(Day,-,-42,Getdate())T0.DocDate=DateAdd(Day,-49,Getdate())和T0.DocDate=DateAdd(Day,-56,Getdate())和T0.DocDate=DateAdd(Day,-63,Getdate())和T0.DocDate=DateAdd(Day,-70,Getdate())和T0.DocDate=DateAdd(Day,-77,Getdate())和T0.DocDate=date(Day,-,-84,Getdate())和T0.DocDate我正在使用SAP B1,并将在SAP内部使用名为B1up的加载项来处理此查询…我正在MS SQL server management studio 17中编写代码。提示:您没有提到DocDate
的数据类型,但如果它是DateTime
,则您可能会遇到时间问题。我建议使用declare@Today as DateTime=Cast(GetDate()as Date);
获取午夜的当前日期,并在整个过程中使用该值。选择
s,而不是乱七八糟的s,您可能希望尝试Sum(DateAdd(day,-14,@Today)时的大小写)