请考虑此表:
StuffCode ClassCode Value
----------------------------------------
AA001 00000 32561
AA001 00001 1232
AA001 00002 12312
AB002 00000 2112
AB002 00001 1234
AB002 00002 120
AC003 00000 6986
AC003 00001 1423
AC003 00002 658
我想创建这样的结果:
StuffCode ClassCode Percent
----------------------------------------
AA001 00000 100
AA001 00001 3.78
AA001 00002 37.81
AB002 00000 100
AB002 00001 58.42
AB002 00002 5.68
AC003 00000 100
AC003 00001 20.36
AC003 00002 9.41
Percent
列根据每个记录的Value
除以每个Class Code = 00000
组中StuffCode
的值来确定。例如
对于第2行:(1232/32561)* 100 = 3.78
对于第5行:(1234/2112)* 100 = 58.42
...
如何使用一个选择来完成此操作?
由于
答案 0 :(得分:1)
您可以查询如下:
Select *, [Percent] = ([Value]*1.0/FIRST_VALUE([Value]) over(partition by StaffCode order by ClassCode))*100
from #testdata
答案 1 :(得分:1)
使用Max() Over()
SELECT *,
[Value] * 1.0 / Max(CASE
WHEN [ClassCode] = '00000' THEN [Value]
END) OVER(partition by StaffCode) * 100
FROM Yourtable