读书人

求一条组合计算SQL语句解决方案

发布时间: 2012-04-23 13:17:38 作者: rapoo

求一条组合计算SQL语句
表数据表:

ID MaterialID PacQty Qty Detail FieldSum
1 1 2 100016*1,040076*1,100014*1
2 040092 2 3 040092*1
3 110022 4 2 110022*1
要根据以下条件得出以下结果:
如果MaterialID为空的,则FieldSum等于Detail里的*后面的数量分别剩以Qty
如果MaterialID不为空,则FieldSum等于MaterialID*(PacQty*Qty)
即输出以下数据:
ID MaterialID PacQty Qty Detail FieldSum
1 1 2 100016*1,040076*1,100014*1 100016*2,040076*2,100014*2
2 040092 2 3 040092*1,100014*1 040092*6
3 110022 4 2 110022*1 110022*8

[解决办法]
如果detail的数据都是以*1结尾的,可以这样

SQL code
if object_id('[tb]') is not null drop table [tb]gocreate table [tb]([ID] int,[MaterialID] varchar(6),[PacQty] int,[Qty] int,[Detail] varchar(26),[FieldSum] varchar(100))insert [tb]select 1,'',1,2,'100016*1,040076*1,100014*1',null union allselect 2,'040092',2,3,'040092*1',null union allselect 3,'110022',4,2,'110022*1',nullgoselect ID,MaterialID,PacQty,Qty,Detail,FieldSum=case when len(isnull(MaterialID,''))=0 then replace(detail,'*1','*'+ltrim(qty))else MaterialID+'*'+ltrim(PacQty*Qty) endfrom tb/**ID          MaterialID PacQty      Qty         Detail                     FieldSum----------- ---------- ----------- ----------- -------------------------- ---------------------------------1                      1           2           100016*1,040076*1,100014*1 100016*2,040076*2,100014*22           040092     2           3           040092*1                   040092*63           110022     4           2           110022*1                   110022*8(3 行受影响)**/ 

读书人网 >SQL Server

热点推荐