产品代码  零件名称          年月  本月入库  本月出库
------------------------------------------------------------------
101 橙色左枪身 20061 100 100
101 橙色左枪身 20062 150 0
101 橙色左枪身 20063 50 150
101 橙色左枪身 20064 80 0
101 橙色左枪身 20072 300 0
101 橙色左枪身 20077 100 0
102 橙色右枪身 20061 150 50
102 橙色右枪身 20062 200 50
102 橙色右枪身 20063 100 20
102 橙色右枪身 20064 200 0
102 橙色右枪身 20072 0 250
102 橙色右枪身 20077 50 0
103 黑色左枪柄 20061 300 0
103 黑色左枪柄 20062 100 50
103 黑色左枪柄 20063 100 0
103 黑色左枪柄 20064 100 0
103 黑色左枪柄 20077 100 0
-----------------------------------------------------------------
此为"出入总计"表产品代码 零件名称           年月 上月结存  本月入库 本月出库 库存
101 橙色左枪身 20061 0 100 100 0
101 橙色左枪身 20062 0 150 0 150
101 橙色左枪身 20063 150 50 150 50
101 橙色左枪身 20064 50 80 0 130
101 橙色左枪身 20072 130 300 0 430
101 橙色左枪身 20077 430 100 0 530
102 橙色右枪身 20061 0 150 50 100
102 橙色右枪身 20062 100 200 50 250
102 橙色右枪身 20063 250 100 20 330
102 橙色右枪身 20064 330 200 0 530
102 橙色右枪身 20072 530 0 250 280
102 橙色右枪身 20077 280 50 0 330
103 黑色左枪柄 20061 0 300 0 300
103 黑色左枪柄 20062 300 100 50 350
103 黑色左枪柄 20063 350 100 0 450
103 黑色左枪柄 20064 450 100 0 550
103 黑色左枪柄 20077 550 100 0 650
---------------------------------------------------------------------
此表是想得出结果的"库存"表之前所用的ACCESS做的查询、现想改为SQL
SELECT 出入总计.产品代码, 出入总计.零件名称, 出入总计.年月, nz(DSum("[本期入库]-[本期出库]","出入总计","[年月]<" & [出入总计]![年月] & "And 产品代码 =  '" & [出入总计]![产品代码] & "'"),0)*1 AS 上期结存, 出入总计.本期入库, 出入总计.本期出库, nz(DSum("[本期入库]-[本期出库]","出入总计","[年月]<=" & [出入总计]![年月] & "And 产品代码 ='" & [出入总计]![产品代码] & "'"),0)*1 AS 期末
FROM 出入总计;
请问大家SQL结果怎么做?

解决方案 »

  1.   

    declare @ta table(产品代码 int,  零件名称  varchar(10) ,  年月 int ,本月入库 int, 本月出库 int)
    insert @ta select 101, '橙色左枪身', 20061, 100, 100
    insert @ta select 101, '橙色左枪身', 20062, 150, 0
    insert @ta select 101, '橙色左枪身', 20063, 50, 150
    insert @ta select 101, '橙色左枪身', 20064, 80, 0
    insert @ta select 101, '橙色左枪身', 20072, 300, 0
    insert @ta select 101, '橙色左枪身', 20077, 100, 0
    insert @ta select 102, '橙色右枪身', 20061, 150, 50
    insert @ta select 102, '橙色右枪身', 20062, 200, 50
    insert @ta select 102, '橙色右枪身', 20063, 100, 20
    insert @ta select 102, '橙色右枪身', 20064, 200, 0
    insert @ta select 102, '橙色右枪身', 20072, 0, 250
    insert @ta select 102, '橙色右枪身', 20077, 50, 0
    insert @ta select 103, '黑色左枪柄', 20061, 300, 0
    insert @ta select 103, '黑色左枪柄', 20062, 100, 50
    insert @ta select 103, '黑色左枪柄', 20063, 100, 0
    insert @ta select 103, '黑色左枪柄', 20064, 100, 0
    insert @ta select 103, '黑色左枪柄', 20077, 100, 0select 产品代码,零件名称,年月,
    [结余]=(select isnull(sum(本月入库-本月出库),0)from @ta where 产品代码=a.产品代码 and 年月<a.年月),
    本月入库,本月出库,
    [库存]=(select sum(本月入库-本月出库)from @ta where 产品代码=a.产品代码 and 年月!>a.年月)
    from @ta a产品代码        零件名称       年月          结余          本月入库        本月出库        库存
    ----------- ---------- ----------- ----------- ----------- ----------- -----------
    101         橙色左枪身      20061       0           100         100         0
    101         橙色左枪身      20062       0           150         0           150
    101         橙色左枪身      20063       150         50          150         50
    101         橙色左枪身      20064       50          80          0           130
    101         橙色左枪身      20072       130         300         0           430
    101         橙色左枪身      20077       430         100         0           530
    102         橙色右枪身      20061       0           150         50          100
    102         橙色右枪身      20062       100         200         50          250
    102         橙色右枪身      20063       250         100         20          330
    102         橙色右枪身      20064       330         200         0           530
    102         橙色右枪身      20072       530         0           250         280
    102         橙色右枪身      20077       280         50          0           330
    103         黑色左枪柄      20061       0           300         0           300
    103         黑色左枪柄      20062       300         100         50          350
    103         黑色左枪柄      20063       350         100         0           450
    103         黑色左枪柄      20064       450         100         0           550
    103         黑色左枪柄      20077       550         100         0           650(17 行受影响)
      

  2.   

    [库存]=(select sum(本月入库-本月出库)from @ta where 产品代码=a.产品代码 and 年月!>a.年月)
    from @ta a
    这句的思路是怎么样的
    为什么要 年月!>a.年月
      

  3.   

    为什么要 年月!>a.年月--是包含当月<=
      

  4.   

    如果这样的话那如:
    产品代码   零件名称    年月       结余        本月入库     本月出库        库存101        橙色左枪身  20063       150         50          150         50
    101        橙色左枪身  20064       50          80          0           13050-100=-100
    80-0=80
    就算把他们加起来也是-20呀
    那我想这句我不太明白sum(本月入库-本月出库)