??? 简单SQL语句 ???
当 长度*宽度/1000000 得数小于1则进位到1,得数不小于1保留两位小数四舍五入,查询下面结果:
查询品名规则等于原品名后两字+装饰普通,其中有无边字段,如果为''或为'-'则为普通,其它为装饰;
如何写语句得到下面的结果。
单号 品名 长度 宽度 数量 有无边
A001 甲A级 1200 815 20 有
A001 甲A级 1200 958 10 有
A001 甲B级 1300 1150 30 三边
A002 乙T级 1100 650 10 -
A002 乙T级 1100 1250 15
单号 品名 长宽数量积
A001 装饰A级 20+11.5=31.5
A001 装饰B级 45
A002 普通T级 10+20.7=30.7
[解决办法]
declare @t table (单号 varchar(4),品名 varchar(5),长度 int,宽度 int,数量 int,有无边 varchar(4))insert into @tselect 'A001','甲A级',1200,815,20,'有' union allselect 'A001','甲A级',1200,958,10,'有' union allselect 'A001','甲B级',1300,1150,30,'三边' union allselect 'A002','乙T级',1100,650,10,'-' union allselect 'A002','乙T级',1100,1250,15,''select 单号 ,品名 =case when 有无边='-' or 有无边='' then '普通' else '装饰' end +right(品名,2),长宽数量积=sum(case when 长度*宽度<1000000 then 1.00 else cast(长度*宽度/1000000.00 as decimal(18,2)) end)from @t group by 单号 ,right(品名,2),case when 有无边='-' or 有无边='' then '普通' else '装饰' end/*单号 品名 长宽数量积---- -------- ---------------------------------------A001 装饰A级 2.15A001 装饰B级 1.50A002 普通T级 2.38*/
[解决办法]