带日期的sql分组依据

fkvaft9z  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(476)

我对sql比较陌生。。。
我正在创建一个返回项目的摘要,我希望完成的结果显示项目代码,返回的金额(总和)和返回的原因。所以理想的情况是这样的:

101 - Blue Widget | 13 | Shipment Lost
101 - Blue Widget | 3  | Damaged in Transit
102 - Red Widget | 5 | Shipment Lost

所以它是按项目和代码分组,并对数量求和
下面是我为此编写的查询的简化版本

Select ITEM, SUM(QUANTITY), RMACODE, DATEENTERED
FROM RMAITEMS
group by ITEM, Quantity, RMACODE

我正在ssrs中加载它,并且需要datenetered,以便我的报表参数只能在@startdate和@enddate之间提取记录。我得到一个错误,说dateentered无效,因为它不在group by中。
有没有更好/不同的方法来达到我想要的结果?
谢谢
安德鲁
我做了edkloczko建议的修改,看起来一切都正常,但是由于我们从select语句中删除了日期,我无法在我的报表参数中使用它。这是一个截图。我有一些想法,我今天将尝试,但如果有人已经爬上了这座山,可以帮助我的方向,我将不胜感激。
缺少所需的表达式

ssgvzors

ssgvzors1#

如果您希望按日期筛选,而实际上不需要日期字段。。。

SELECT ITEM, SUM(QUANTITY), RMACODE
FROM RMAITEMS
WHERE DATEENTERED>=STARTDATE AND DATEENTERED<=ENDDATE
GROUP BY ITEM, QUANTITY, RMACODE

这将给你所有你需要的记录,并使额外的过滤步骤,你正在做的不必要-它只会选择开始和结束日期之间的记录。
我以前在使用ibmdb2时遇到过同样的问题。据我所知,您需要指定groupby语句中的所有select项。不确定这是否特定于某些数据库。

相关问题