首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个SQL来总结不同的“按”级别分组

一个SQL来总结不同的“按”级别分组
EN

Stack Overflow用户
提问于 2016-03-23 10:30:43
回答 3查看 106关注 0票数 4

我在数据库中有一个股票表:

根据股票表中的数据,我希望输出更详细的数据:

股票数量代表A项的总库存数量。

位置Qty表示每个位置A项的总数量

子位置Qty表示项目A的总数量,每个子位置的特定位置。

我想知道是否有一种方法可以在一个查询中获得详细的输出,还是应该单独进行每个查询,并编写一些代码来连接每个结果。

我可以写:

  • 为了获得股票数量: 选择项目,和(Qty)作为StockQty从股票集团逐项;
  • 为了定位,Qty: 从股票集团中按项目、地点选择项目、位置、和(Qty)作为LocationQty;
  • 为了获得细分位置,Qty: 按项目,地点,SubLocation,和(Qty)从股票集团中按项目、地点、SubLocation选择项目、地点、和作为SubLocationQty;

然后在后面的代码中,为数据视图中的输出编写一些代码。

实际上,我正在寻找一个查询,它返回一个datatable中的所有数据并将其绑定到datagridview。

任何其他解决办法都是受欢迎的。

我正在使用AS400,但是如果在其他数据库管理系统中有解决方案,请回答,我将尝试(如果可能的话)在我的数据库管理系统环境中工作。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-23 10:38:50

试试这个:

代码语言:javascript
复制
SELECT t3.Item, t3.StockQty,
       t2.Location, t2.LocationQty,
       t1.SubLocation, t1.SubLocationQty
FROM (
   SELECT Item, Location, SubLocation, Sum(Qty) as SubLocationQty
   From Stock
   Group By Item, Location, SubLocation) AS t1
JOIN (
   SELECT Item, Location, Sum(Qty) as LocationQty
   From Stock
   Group By Item, Location
) AS t2 ON t1.Item = t2.Item AND t1.Location = t2.Location
JOIN (
   SELECT Item, Sum(Qty) as StockQty
   From Stock
   Group By Item
) AS t3 ON t1.Item = t3.Item 
票数 4
EN

Stack Overflow用户

发布于 2016-03-23 10:52:03

不如:

代码语言:javascript
复制
SELECT Item, Location, SubLocation, Sum(Qty) as SubLocationQty 
From Stock 
Group By Item, Location, SubLocation with rollup

如果您在rdbms中有汇总,这是非常简单的。只要用字符串'Total‘替换'null’,你就成了家庭成员……

票数 4
EN

Stack Overflow用户

发布于 2016-03-23 10:37:12

为此您可以使用多个子查询。

代码语言:javascript
复制
SELECT Item, 
(SELECT StockQty 
 FROM (SELECT Item, Sum(Qty) AS StockQty
       FROM Stock
       GROUP BY Item)) AS StockQty
(SELECT LocationQty 
 FROM (SELECT Item, Location, Sum(Qty) AS LocationQty
       FROM Stock
       GROUP BY Item, Location)) AS LocationQty,
(SELECT SubLocationQty 
 FROM (SELECT Item, Location, SubLocation, Sum(Qty) AS SubLocationQty
       FROM Stock
       GROUP BY Item, Location, SubLocation)) AS SubLocationQty
FROM Stock
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36175652

复制
相关文章

相似问题

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