【发布时间】:2011-08-08 20:11:00
【问题描述】:
我需要来自多表的报告我使用这个查询(SQL Server)
Select CASE When ([bills].[BT] ='0' and [bills].[T] = 1 )Then 'Purchas1'
When([bills].[BT] ='0' and [bills].[T] = 3 ) Then 'Output'
When([bills].[BT] ='0' and [bills].[T] = 4 ) Then 'Input'
When [bills].[BT] ='1' Then 'ٍSales'
When [bills].[BT] = '2' Then 'Prch2'
When [bills].[BT] = '3' Then 'ٍSales2'
When [bills].[BT] = '4' Then 'SInput'
END AS BillType,
[mat].[Name] as Product,
[mat].[Code], [store].[Name],
SUM( [billInfo].[qty]) as Qtys
from [mat],[billInfo000],[store],[bu],[bills]
Where [bu].[TG] =[bills].[g]
and [billInfo].[ParentGUID] =[bu].[g]
and [billInfo].[StoreGUID] =[store].[g]
and [billInfo].[MatGUID] = [mat].[g]
Group by [bills].[BT],[bills].[T],[mat].[Name],
[mat].[Code],[store].[Name] ,[mat].[qty]
我想要的是在每组之后用计算添加一行 如果它是相同的产品和相同的代码和商店我需要 收集purchase1+Input+Prch2+SInput减去Sales、Output、Sales2 像这样:
账单类型 |产品 |代码 |姓名 |数量 -------- -------- ---- ---- ---- Purchas1 Pro1 001 主要 150 输出 Pro1 001 主 10 销售 Pro1 001 主要 30 Purch2 Pro1 001 主要 50 Balance Pro1 001 主 160 输出 Pro1 001 分支 10 销售 Pro1 001 分公司 10 Balance Pro1 001 Brabch -20谢谢
【问题讨论】:
-
SQL有什么实现? SQL 服务器?甲骨文? MySQL? PostgreSQL?
-
您是否需要在单个 SQL 语句中完成此操作?我不认为这是可能的,但如果是的话,我有兴趣看到那个美妙的 sql 语句。不过,在存储过程中执行此操作应该很容易。
-
@Icarus - 我认为
ROLLUP可能是可能的,但我没有和他们玩过很多 -
看来,如果这是一个 SQL Server 查询,@Mohammed 需要做的就是在 Group BY 之后添加一个 WITH ROLLUP 子句。请参阅此示例:blog.sqlauthority.com/2010/02/24/…
-
@lcarus 我是初学者,如何在存储过程中执行此操作?
标签: sql-server grouping subtotal