首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >报表生成器3.0中使用的SQL查询:将结果分组在一起

报表生成器3.0中使用的SQL查询:将结果分组在一起
EN

Stack Overflow用户
提问于 2014-09-24 07:50:06
回答 3查看 185关注 0票数 3

例如,我正试图制作一份销售报告。

代码语言:javascript
运行
复制
itemid          salesdate       qty_sold
item1           1/9/14          3
item1           1/9/14          2
item1           1/9/14          5
item2           2/9/14          2
item3           4/9/14          1

我遇到的问题是,例如,周一3的销售可能是由1-3个不同的销售订单组成的,我只能让它显示多行,而不是按我的意愿分组。

我想要制作一份报告,上面显示当天的商品id、购买日期和销售总额,如果有意义的话,不要列出包括该项目在内的所有销售情况?

提前感谢

更多详情:

代码语言:javascript
运行
复制
    SELECT st.orderdate, sl.itemid, sl.qty
      FROM salestable st
INNER JOIN salesline sl
        ON salestable.salesid = salesline.salesid

目前,它显示的结果如下。

代码语言:javascript
运行
复制
OrderDate     ItemId     Qty    
1/1/14        101        1
1/1/14        101        3
1/1/14        102        1

我想分组行,如果可能的话,每个日期只显示1行& itemid。它不起作用,因为它们显然是数据库中的单独行,因为它们有不同的订单号等等。

代码语言:javascript
运行
复制
OrderDate     ItemId    Qty
1/1/14        101       4
1/1/14        102       1
2/1/14        102       5
2/1/14        101       2

如果不能这样做,那么报表生成器中的分组类型就足够了,但是我看不到这样做的方法!

干杯

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-24 12:16:56

对于问题中包含的SQL,您需要在GROUP BY语句中使用聚合函数SUM。

代码语言:javascript
运行
复制
    SELECT st.orderdate, sl.itemid, SUM(sl.qty)
      FROM salestable st
INNER JOIN salesline sl
        ON salestable.salesid = salesline.salesid
  GROUP BY st.orderdate, sl.itemid

您提到了防止这种情况的其他字段,但不要将它们包含在示例中任何地方。如果你能修改你的问题,包括这些,我们可以提出一个明确的答案。

根据您对日期的评论,这是一个可能的解决方案:

代码语言:javascript
运行
复制
    SELECT  DATEADD(dd, 0, DATEDIFF(dd, 0, st.orderdate)), sl.itemid, SUM(sl.qty)
      FROM salestable st
INNER JOIN salesline sl
        ON salestable.salesid = salesline.salesid
  GROUP BY DATEADD(dd, 0, DATEDIFF(dd, 0, st.orderdate)), sl.itemid
票数 0
EN

Stack Overflow用户

发布于 2014-09-24 08:02:51

如果我正确理解的话,你的问题是整理记录。

如果是这样的话,那么将其附加到SQL代码中。

代码语言:javascript
运行
复制
ORDER BY salesdate DESC
票数 2
EN

Stack Overflow用户

发布于 2014-09-24 12:33:29

自从我在this SO post上看到它以来,我就一直使用这种格式更改日期。

代码语言:javascript
运行
复制
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

我希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26011392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档