读书人

? 简单SQL语句 ?该怎么解决

发布时间: 2012-03-18 13:55:38 作者: rapoo

??? 简单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




[解决办法]

SQL code
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*/
[解决办法]
探讨

SQL code

declare @t table
(单号 varchar(4),品名 varchar(5),长度 int,宽度 int,数量 int,有无边 varchar(4))
insert into @t
select 'A001','甲A级',1200,815,20,'有' union all
select 'A001','甲A级',1200,958,10,'有' union a……

读书人网 >SQL Server

热点推荐