日期:2014-05-17  浏览次数:20565 次

SQL 语句新增一个字段,纠结好久就是不成功,求高手指教
数据库里面有一张表格tb,现新增一个字段ABC分类,要求是 按百分比分 百分比前 0.0-0.5 为A,0.5-0.9为B,0.9-1.0为C
  (百分比是  备件消耗金额占总消耗金额的比,tb表已经按 百分比从大到小排序)

备件    百分比   新增字段(ABC分类)
A       0.270     A
B       0.250     A
C       0.200     B
D       0.180     B
E       0.100     C

------解决方案--------------------
if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (备件 nvarchar(2),百分比 numeric(4,3))
insert into [TB]
select 'A',0.270 union all
select 'B',0.250 union all
select 'C',0.200 union all
select 'D',0.180 union all
select 'E',0.100

select * from [TB]

SELECT  B.备件 ,
        B.百分比 ,
        CASE WHEN SUM(A.百分比) BETWEEN 0 AND 0.5 THEN 'A'
             ELSE CASE WHEN SUM(A.百分比) BETWEEN 0.5 AND 0.9 THEN 'B'
                       ELSE 'C'
                  END
        END AS ABC分类
FROM    dbo.TB A
        INNER JOIN TB B ON A.备件 <= B.备件
GROUP BY B.备件 ,
        B.百分比
ORDER BY B.备件


/*
备件 百分比 ABC分类
A 0.270 A
B 0.250 B
C 0.200 B
D 0.180 B
E 0.100 C*/

------解决方案--------------------
SELECT
备件,
百分比,
(SELECT 
CASE WHEN 百分比 < 0.5 THEN 'A' 
ELSE 
CASE WHEN 百分比>=0.5 AND 百分比 < 0.9 THEN 'B'
ELSE 'C'
END
END
)
FROM tb