首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求scmail81(琳·风の狼(修罗)) 再帮帮小弟我,多谢

2012-01-10 
求scmail81(琳风の狼(修罗)) 再帮帮我,谢谢!select(select订料单号from订料表whereT.型号型号andT.料名料

求scmail81(琳·风の狼(修罗)) 再帮帮我,谢谢!
select   (select   订料单号   from   订料表  
                              where   T.型号=型号   and   T.料名=料名   and   实际到料时间=T.来料时间)   as   订料单号,
                T.型号,T.料名,T.来料时间,T.来料数量,   T.发料单号,T.发料时间,T.发料数量,
              (select   sum(来料数)  
                            from   (
                              --期初的库存就加在这个地方   由于我不知道你期初表的结构!所以没有加!
                                      select   型号,料名,时间,来料数   from   来料表  
                                      union
                                      select   型号,料名,时间,-发料数   from   发料表)   S
                where   T.型号=S.型号   and   T.料名=S.料名   and   S.时间 <=T.时间)   as   库存
from
        (select   L.型号,L.料名,L.时间   as   来料时间,L.来料数   as   来料数量,null   as   发料单号,null   as   发料时间,null   as   发料数量,L.时间
                from   来料表   L
          Union   All
                select   F.型号,F.料名,NUll   as   来料时间   ,null   as   来料数量   ,F.发料单号,F.时间   as   发料时间,F.发料数   as   发料数量,F.时间
                from   发料表   F)T
where   T.型号= '1001 'and   T.料名= '电源 '---and   T.时间   between   '2007-04-15 'and   '2007-04-18 '      
order   by   T.时间

以上语句得到结果如下:
订料单号   型号   料名   来料时间       来料数量   发料单号   发料时间   发料数量     库存
A-1002       1001   电源   2007-04-20     500             NULL       NULL               NULL       550
NULL1001   电源   NULL         NULL         AF-1004     2007-04-22     50         500
A-10031001   电源   2007-05-01     100       NULL       NULL           NULL       600
----------------------------------
总来料数/总发料数/现库存数           600             NULL           NULL                 50         600  
----------------------------------  
 
你帮我写的这个语句能不能再UNION   ALL   一条记录上去啊(上面最后那条)...
求scmail81(琳·风の狼(修罗))你好,不知道你还有没有我的原始数据!


[解决办法]
declare @T table
(
订料单号 varchar(100),


型号 varchar(30),
料名 varchar(30),
来料时间 datetime,
来料数量 int,
发料单号 varchar(100),
发料时间 datetime,
发料数量 int,
库存 int
)


insert @T
select (
select top 1 订料单号 from 订料表 where T.型号=型号 and 实际到料时间 <=isnull(T.来料时间,T.发料时间) order by 实际到料时间 DESC
) 订料单号,
T.型号,T.料名,T.来料时间,T.来料数量, T.发料单号,T.发料时间,T.发料数量,
(
select sum(来料数)
from (
--期初的库存就加在这个地方 由于我不知道你期初表的结构!所以没有加!
select 型号,时间,来料数 from 来料表
union
select 型号,时间,-发料数 from 发料表
) S
where T.型号=S.型号 and S.时间 <=T.时间
) as 库存
from T_Test T
where T.型号= '1001 '

insert @T
select '总来料数/总发料数/现库存数 ' as 订料单号, ' ' as 型号, ' ' as 料名,null as 来料时间,来料数量, ' ' as 发料单号,null as 发料时间,发料数量,库存
from (
select 型号,料名,sum(来料数量) as 来料数量,sum(发料数量) as 发料数量,sum(来料数量)-sum(发料数量) as 库存 --注:在这要加上期初的库存
from T_Test
where 型号= '1001 '
group by 型号,料名
) S

select * from @T

热点排行