FiN*_*FiN 7 sql-server sql-server-2014
我正在尝试创建一个视图。我的 SQL Server 数据库中有一些数据,我想按它们mark1和mark2. 现在,当我对它们进行排序时,我想选择mark1谁最低,mark2并计算与其他mark1s的偏差是多少。表格现在看起来像这样,但没有偏差。
| mark1 | mark2 | mass || deviation |
|:-----------|------------:|:------------:||:------------:|
| 0001 | 10000 | 10,0 || min0001 |
| 0001 | 15000 | 12,0 || +20% |
| 0002 | 11200 | 18,0 || min0002 |
| 0002 | 13000 | 35,5 || +97.2% |
| 0002 | 14565 | 85,5 || 375% |
| 0003 | 15004 | 15,4 || min0003 |
| 0003 | 21250 | 17,4 || +12.9% |
| 0003 | 60764 | 16,4 || 6.49% |
Run Code Online (Sandbox Code Playgroud)
现在,如您所见,它是由mark1and排序的mark2。现在,我的问题是偏差列,我需要它mark1,让我们说0001(他mark2是10000)并找到最低质量并找到与其他0001(15000)的偏差。正如你在表中看到的。
返回 SQL Server 2014 中有序值集中的第一个值。
按 进行分区mark1和排序mark2。
像这样的事情应该为你做:
select T.*,
100 * (T.mass - T.FirstMass) / T.FirstMass as Deviation
from (
select T.*,
first_value(T.mass) over(partition by T.mark1 order by T.mark2) as FirstMass
from dbo.YourTable as T
) as T;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |