求一条组合计算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结尾的,可以这样
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 行受影响)**/