c# - 一条SQL汇总不同的 'group by'级别

标签 c# sql winforms db2 ibm-midrange

我在数据库中有一个 Stock 表:

enter image description here

基于库存表中的数据,我想输出更详细的数据:

enter image description here

库存数量表示商品 A 的总库存数量。

Location Qty 表示每个 Location 的 Item A 的总数量

子位置数量代表项目 A 的总数量,对于每个子位置的特定位置。

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

我可以写:

  • 为了得到库存数量:

    SELECT Item, Sum(Qty) as StockQty
    From Stock
    Group By Item;
    
  • 为了得到位置数量:

    SELECT Item, Location, Sum(Qty) as LocationQty
    From Stock
    Group By Item, Location;
    
  • 为了获得子位置数量:

    SELECT Item, Location, SubLocation, Sum(Qty) as SubLocationQty
    From Stock
    Group By Item, Location, SubLocation;
    

然后在代码隐藏中,编写一些代码以在数据 GridView 中输出。

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

欢迎任何其他解决方案。

我在 AS400 中工作,但如果在其他 DBMS 中有解决方案,请回答,我会尝试使其在我的 DBMS 环境中工作(如果可能)。

最佳答案

试试这个:

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 

关于c# - 一条SQL汇总不同的 'group by'级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36175652/

相关文章:

c# - 组合应该专门用于继承还是在某些情况下不应该使用?

c# - 是否可以在 windows 窗体中使用 'sandbox' IE?

c# - WinForms TreeView - 如何手动 "highlight"节点(就像它被点击一样)

c# - Winforms:如何将事件处理程序附加到其他控件

C# 在 get 内修剪;放;

c# - 当 Access 2007 数据库设置为 “Working online with Sharepoint” 模式时,我的应用程序无法正确连接

c# - 我可以在 C# 中调用同一个类的重载构造函数吗?

java - 通过不同属性引用同一个表的 Hibernate JOIN FETCH 导致 1+N 查询?

mysql - 如何使用 mySQL 搜索转义字符串?

sql - 在 postgresql 中生成自动 ID