有个SQL语句想请教
OrderNo OrderDate WareNo WareName Spec InQuantity OutQuantity
001 2005-12-1 F01 光驱 52X 10
002 2005-12-5 F01 光驱 52X 2
003 2005-12-9 F01 光驱 52X 4
我要得到如下结果
OrderNo OrderDate WareNo WareName Spec InQuantity OutQuantity LibQuantity
001 2005-12-1 F01 光驱 52X 10 10
002 2005-12-5 F01 光驱 52X 2 8
003 2005-12-9 F01 光驱 52X 4 12
其中,LibQuantity = InQuantity - OutQuantity
the key is;
select OrderNo,OrderDate,WareNo,WareName,Spec,InQuantity,OutQuantity,
(select sum(b.InQuantity)-sum(b.OutQuantity) from 表 as b where b.OrderDate<=a.OrderDate and a.WareNo=b.WareNo) as LibQuantity
from 表 as a
create database backup to one disk or path
create pro myBack
@databasename varchar(20)
declare @sqlstr varchar(100)
set sqlstr=' backup database '+@databasename+' to disk= ' 'C:/path' ' '
exec(@sqlstr)
go
我现在有两个表,A和B
根据A中的字段WW跟B中的字段XX关联
但是现在有条件就是,当WW字段是以PO打头时,比如PO0504123,则要在PO0504123前加“MI-”,即成为“MI-PO0504123”,再与B中的XX字段关联;而当WW字段是其他内容时,就直接跟XX关联。
我的语句是这样的:
select * from a left outer join b on (case when left(a.ww,2)='po' then ('MI-'+a.ww) else a.ww else)=b.xx
也试过这样:
select * from a left outer join b on (case when left(a.ww,2)='po' then ('MI-'+a.ww)=b.xx else a.ww else=b.xx)
都是报错,是不是这样不能用CASE?
那我该怎么写,请各位指点。小弟在线等。谢谢
PS:我也用过函数,但是速度很慢,很久都没找出数据,是不是我没写好函数呢:)
the key is:
select * from
(select *,case when left(a.ww,2)='po' then ('MI-'+a.ww) else a.ww end as new_ww from A) A left join B
on A.new_ww=B.xx
和
select * from a left outer join b on (case when left(a.ww,2)='po' then ('MI-'+a.ww) else a.ww end)=b.xx
我都测试正常呀?是不是语法或者是字段名写错了?
exec(@sqlstr)
go
我现在有两个表,A和B
根据A中的字段WW跟B中的字段XX关联
但是现在有条件就是,当WW字段是以PO打头时,比如PO0504123,则要在PO0504123前加“MI-”,即成为“MI-PO0504123”,再与B中的XX字段关联;而当WW字段是其他内容时,就直接跟XX关联。
我的语句是这样的:
select * from a left outer join b on (case when left(a.ww,2)='po' then ('MI-'+a.ww) else a.ww else)=b.xx
也试过这样:
select * from a left outer join b on (case when left(a.ww,2)='po' then ('MI-'+a.ww)=b.xx else a.ww else=b.xx)
都是报错,是不是这样不能用CASE?
那我该怎么写,请各位指点。小弟在线等。谢谢
PS:我也用过函数,但是速度很慢,很久都没找出数据,是不是我没写好函数呢:)
the key is:
select * from
(select *,case when left(a.ww,2)='po' then ('MI-'+a.ww) else a.ww end as new_ww from A) A left join B
on A.new_ww=B.xx
和
select * from a left outer join b on (case when left(a.ww,2)='po' then ('MI-'+a.ww) else a.ww end)=b.xx
我都测试正常呀?是不是语法或者是字段名写错了?
exec(@sqlstr)
go