我的表格如下:
类别     名称    规格    单位    出库数量    入库数量   出入库单价    存放区域
电脑     键盘    1       个      0           10         100            一楼
电脑     键盘    1       个      6           0          600            一楼
日用品   椅子    2x4     把      0           5          10             二楼要实现下面的统计结果
类别     名称    规格    单位    当前库存量   当前产品库存价值
电脑     键盘    1       个      4            40
日用品   椅子    2x4     把      5            50上面统计结果里的键盘库存量的价值是库存量4乘以“出入库单价”列里的入库单价100来获得的,请问如何书写select查询使得分组统计的时候其单价是按该产品入库时的单价来计算?

解决方案 »

  1.   

    应该是400 吧?
    --> 测试数据:[tb]
    if object_id('[tb]') is not null drop table [tb]
    go
    create table [tb]([类别] varchar(6),[名称] varchar(4),[规格] varchar(3),[单位] varchar(2),[出库数量] int,[入库数量] int,[出入库单价] int,[存放区域] varchar(4))
    insert [tb]
    select '电脑','键盘','1','个',0,10,100,'一楼' union all
    select '电脑','键盘','1','个',6,0,600,'一楼' union all
    select '日用品','椅子','2x4','把',0,5,10,'二楼'--------------------------------查询开始------------------------------select 类别,名称,规格,单位,
    sum(入库数量-出库数量) as 当前库存量,
    sum(入库数量-出库数量)*(select 出入库单价 from [tb] where 出库数量=0 and 类别=a.类别 and [名称]=a.[名称]) as 当前产品库存价值
    from [tb] a
    group by 类别,名称,规格,单位
    /*
    类别     名称   规格   单位   当前库存量       当前产品库存价值
    ------ ---- ---- ---- ----------- -----------
    电脑     键盘   1    个    4           400
    日用品    椅子   2x4  把    5           50(2 行受影响)
    */
      

  2.   


    select 类别,
     名称,
     规格,
     单位,
     当前库存量=sum(出库数量)-sum(入库数量),
     当前产品库存价值=--这个条件不足,很难做
    from 表
    group by 类别,
     名称,
     规格,
     单位,
      

  3.   

    如果有多次入库,取平均值
    ---测试数据---
    if object_id('[tb]') is not null drop table [tb]
    go
    create table [tb](
    [类别] varchar(6),
    [名称] varchar(4),
    [规格] varchar(3),
    [单位] varchar(2),
    [出库数量] int,
    [入库数量] int,
    [出入库单价] int,
    [存放区域] varchar(4)
    )
    insert [tb]
    select '电脑','键盘','1','个',0,10,100,'一楼' union all
    select '电脑','键盘','1','个',6,0,600,'一楼' union all
    select '日用品','椅子','2x4','把',0,5,10,'二楼'
    go---查询---
    select 类别,名称,规格,单位,
    sum(入库数量)-sum(出库数量) as 当前库存量, 
    (sum(入库数量)-sum(出库数量))
    *(sum(case when 出库数量=0 then 出入库单价 else 0 end)/sum(case when 出库数量=0 then 1 else 0 end)) as 当前产品库存价值
    from tb
    group by 类别,名称,规格,单位---结果---
    类别     名称   规格   单位   当前库存量       当前产品库存价值
    ------ ---- ---- ---- ----------- -----------
    电脑     键盘   1    个    4           400
    日用品    椅子   2x4  把    5           50(2 行受影响)
      

  4.   

    星信科贸5月9号又在网上招人骗人那:http://bz.qlrc.com/person/companys.asp?companyid=390984  学弟学妹们慎重啊!
      

  5.   

    后来,我select出分组库存数量表和入库量不为空的记录的表(此表包含入库单价),之后我join两个表就得到了结果。
    to Beirut,因为当时只考虑到尽量少建立些表,觉得多一个表就多一鬼,并且目前的数据量不是很大,所以就尽量把它放在一张表里了。
    谢谢各位啦。