您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Delphi >> 急求一个进销存的sql语句按货品类别查询交易汇总

急求一个进销存的sql语句按货品类别查询交易汇总

来源:网络整理     时间:2016/8/16 7:55:42     关键词:

关于网友提出的“ 急求一个进销存的sql语句按货品类别查询交易汇总”问题疑问,本网通过在网上对“ 急求一个进销存的sql语句按货品类别查询交易汇总”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 急求一个进销存的sql语句按货品类别查询交易汇总
描述:

我请教一个进销存的sql语句,
按货品类别查询交易汇总,
表结构
交易主表:
货单编号    单据类别   
A1           出货
B2           出退
交易明细:
流水号  货单编号    单据类别  货品编号  数量   金额
1       A1          出货      G1        10     100
2       A1          出货      G2        10     100
3       B1          出退      G1        5       50
4       B1          出退      G2        5       50
货品主表:
货品编号      货品类别
G1            K_电脑
G1            J_家用
要求查询结果:
货品编号     出货数       出货金额             退货数       退货金额


解决方案1:

select 货品编号,sum(case 单据类别 when A1 then 1 else 0) as 出货数,sum(select 金额 from 交易明细 where 货单编号 = A1)as  出货金额,sum(case 单据类别 when B1 then 1 else 0) as 退货数,sum(select 金额 from 交易明细 where 货单编号 = B1) as 退货金额 from 交易明细 group by 货品编号

解决方案2:

create table 交易明细
( 流水号 char(10),
  货单编号  char(10),
  单据类别  char(10),
  货品编号  char(10),
  数量      integer,
  金额      integer
)
insert into 交易明细
select '1',     'A1'  ,      '出货',    'G1'   ,     10  ,   100
union
select '2',     'A1'  ,      '出货',    'G2'   ,     10  ,   100
union
select '3',     'B1'  ,      '出退',    'G1'   ,     5  ,   50
union
select '4',     'B1'  ,      '出退',    'G2'   ,     5  ,   50
union
select '5',     'B1'  ,      '出货',    'G1'   ,     5  ,   50
union
select '6',     'B1'  ,      '出退',    'G2'   ,     1 ,  10
 
DECLARE @SQL VARCHAR(8000) 
SET @SQL='SELECT 货品编号' 
SELECT @SQL= @SQL+ ',sum(CASE WHEN 单据类别 = ''' + 单据类别 + ''' THEN 数量 else 0 END) [' +rtrim(单据类别) + '数量]' 
 + ',sum(CASE WHEN 单据类别 = ''' + 单据类别 + ''' THEN 金额 else 0 END) [' +rtrim(单据类别) + '金额]' 
FROM (SELECT DISTINCT 单据类别 FROM 交易明细) A 
SET @SQL=@SQL+ ' FROM 交易明细 GROUP BY 货品编号' 
EXEC (@SQL) 
drop table 交易明细

解决方案3:

select *,b.OutNum,c.inNum from 货品信息表 A
left join
(select sum(数量) as OutNum ,货品编号 from 交易明细 where 单据类别 ='出货' order by 货品编号) b on 
a.货品编号=b.货品编号
left join 
 (select sum(数量) inNum,货品编号 from 交易明细 where 单据类别 ='出退 ' order by 货品编号) c on 
a.货品编号=c.货品编号


以上介绍了“ 急求一个进销存的sql语句按货品类别查询交易汇总”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3321996.html

相关图片

相关文章