希望这很简单。我正在寻找的是每天按部门按部门总销售。有多个部门,在多个有多个日期的商店中。
我得到的是该部门每次销售的一排。我认为这是因为SQL正在做它所讲的事情,并且由于交易时间而向我展示每一行。我每天都在分组,我相信我会缺少一些简单的东西。
这是一个示例表
SalesTotal | Department | StoreNumber | SalesDateTime
---------- | ---------- | ----------- | -------------------
3.96 Books 5000 2016-10-01 10:01:11
0.99 Books 5000 2016-10-01 10:03:40
3.98 Books 5000 2016-10-01 10:19:45
0.99 Books 5000 2016-10-01 10:27:58
2.98 Women 5000 2016-10-01 11:50:11
1.49 Women 5000 2016-10-01 11:58:35
2.97 Women 5000 2016-10-01 12:05:11
4.15 Women 5000 2016-10-01 12:06:20
3.98 Mens 5000 2016-10-01 12:55:03
4.98 Mens 5000 2016-10-01 13:02:13
4.47 Mens 5000 2016-10-01 13:19:40
我期望的是这个
SalesTotal | Department | StoreNumber | SalesDateTime
---------- | ---------- | ----------- | -------------------
9.93 Books 5000 2016-10-01
11.58 Womens 5000 2016-10-01
13.43 Mens 5000 2016-10-01
我认为这只是一个总和分组查询,但我无法以这种方式出现。我正在从表中获取数据并将其放入温度表中,因为我从其他表中有其他数据(例如StoreName等),但是上面的值是准确的。以下是查询(是的,我有几个变量,但仅用于在前端选择日期)...
SELECT SUM(Price) AS SalesTotal
, Department
, StoreNumber
, SaleDateTime
INTO #tblSales
FROM LineItem
WHERE SaleDateTime BETWEEN @StartDate AND @EndDate
GROUP BY Department, T.StoreNumber, SaleDateTime
SELECT *
FROM #tblSales
感谢您看看,如果需要更多信息,请告诉我。如前所述,我似乎无法弄清楚分组部分所缺少的东西。感谢我能得到的任何帮助。
您是按日期和时间分组的,这意味着如果它们不完全相同,则不会分组。仅基于日期组,您必须将TransactionDateTime
转换为Date
,然后对此进行选择/分组。
SELECT SUM(Price) AS SalesTotal
, Department
, StoreNumber
, CONVERT(date, SaleDateTime) As SaleDate
INTO #tblSales
FROM LineItem
WHERE SaleDateTime BETWEEN @StartDate AND @EndDate
GROUP BY Department, T.StoreNumber, CONVERT(date, SaleDateTime)
SELECT *
FROM #tblSales
您正在提供略有冲突的信息,因为您的查询使用了一个称为SaleDateTime
的字段,但是您的示例表使用TransactionDateTime
。上面的示例使用SaleDateTime
。
这是因为您也在使用日期中的时间进行分组,因此,除非排在它们中相同的时间相同,否则它将无法分组,因为您需要它。改用此方法:
select sum(Price) as SalesTotal,
Department,
StoreNumber,
min(convert(varchar, SaleDateTime, 102)) as SaleDateTime
from LineItem
where SaleDateTime between @StartDate and @EndDate
group by Department,
T.StoreNumber,
year(SaleDateTime),
datepart(dy, SaleDateTime)
您的查询似乎还可以,问题在于您的可变/列名称,因为当您发布数据时,我用较小的更改测试了您的问题,并且效果很好,查询我执行与您提供的数据一样(修改)
SELECT SUM(SalesTotal), Department, StoreNumber
FROM Test
Where TransactionDateTime = '2016-10-01 10:01:00.000'
GROUP BY Department, StoreNumber, TransactionDateTime
如果问题仍然存在,请在此处粘贴您的错误/结果