Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-每列显示特定范围的结果?_Sql_Sql Server_Tsql_Date - Fatal编程技术网

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

我正试图在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 
    T1.ItemCode
我想把
SUM(t1.quantity)
字段分解为几个星期,但我不太明白如何将其分解

我想要
Current Week
,它将是
Getdate()
Getdate()+7
之间的
daterange
,然后是
Getdate()+8到
Getdate()+14`等等。。。这将持续12周

谢谢你的帮助

Andy

HAHA 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)时的大小写)