sql—从第二行复制到下一列第一行的值

y4ekin9u  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(302)

table如下所示。

DROP TABLE #TEMP
CREATE TABLE #TEMP
(
    UVRID VARCHAR(20),  
    DynamoNo INT,
    FREQHZ INT
)

INSERT #TEMP    
SELECT '15AL78',100,10 UNION ALL
SELECT '15AL78',110,20 UNION ALL
SELECT '257T13',100,10 UNION ALL
SELECT '257T13',110,20 UNION ALL
SELECT '257T13',931,30

我想让一个新的专栏说 SuprerFrez 其值取决于列 FREQHZ .
UVRID 第二组值 FREQHZ 将是的第一个值 SuprerFrez 最后呢 FREQHZ , SuprerFrez 值将为零。
具有1个新列的预期输出,该列的值取决于 FREQHZ 列。订货人 FREQHZ ASC ```
UVRID |DynamoNo|FREQHZ|SuprerFrez
'15AL78'|100 |10 |20
'15AL78'|110 |20 |0
'257T13'|100 |10 |20
'257T13'|110 |20 |30
'257T13'|931 |30 |0

abithluo

abithluo1#

你在找什么 lead() :

select t.*,
       lead(FREQhz, 1, 0) over (partition by UVRID order by DynamoNo) as SuprerFrez
from #temp t;

注意:这假设订购是通过 DynamoNo . 如果这不是您想要的顺序,那么您需要另一个列来指定顺序。例如,如果您想要“插入”顺序,可以使用 identity 列:

CREATE TABLE #TEMP (
    TempID INT IDENTITY(1, 1) PRIMARY KEY,
    UVRID VARCHAR(20),  
    DynamoNo INT,
    FREQHZ INT
);

然后代码看起来像:

select t.*,
       lead(FREQhz, 1, 0) over (partition by UVRID order by TempID) as SuprerFrez
from #temp t;

相关问题