高手 救救我吧(100分)

  • 主题发起人 主题发起人 penglin3000
  • 开始时间 开始时间
P

penglin3000

Unregistered / Unconfirmed
GUEST, unregistred user!
类型 名称 数量
期初 01 10
期初 01 20
入库 01 2
入库 01 3
入库 02 8
出库 01 6
出库 02 7
出库 04 1



名称 期初数量 入库数量 出库数量
01 30 5 6
02 0 8 7
04 0 0 1
 
虽然我不知道有没有更好的方法,但建临时表应该可以实现,
 
这是交叉表啊,如果你那什么什么数量只有三个,用SQLSERVER的话用sum case when语句搞定。如是别的,不知。
这个语句请检查以前的,大把。
 
select 名称,sum(case when 期初 then 数量 else 0 end),
sum(case when 入库 then 数量 else 0 end),
sum(case when 出库 then 数量 else 0 end)
from tablename
group by 名称
这是sql server
 
access 数据库
select 名称,sum(iif(类型=‘期初’,数量,0) ),
sum(iif(类型=‘入库’,数量,0) ),
sum(iif(类型=‘出库’,数量,0) ),
from tablename
group by 名称

 
若要在 [purple]sql server [/purple]中查询,可用
select 名称, sum(case when 类型 = '期初' then 数量
else 0) as 期初数量, sum(case when 类型 = '入库' then 数量
else 0) as 入库数量, sum(case when 类型 = '出库' then 数量
else 0) as 出库数量 from 表名 group by 名称
若在 [blue]access[/blue] ,有交叉表查询功能
若在 [red]delphi[/red] ,可用 TxQuery 控件 ,www.51delphi.com 上有得下
 
用union应该可以搞定吧。
 
还可以用游标,我以前做过
 
后退
顶部