繁体   English   中英

列第 2 行的值复制到下一列的第 1 行

[英]Value from 2nd Row of column copied to 1st row of next column

该表如下所示。

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

我正在尝试制作 1 个新列SuprerFrez ,其值取决于列FREQHZ

对于每个UVRID组,第二个值FREQHZ将是SuprerFrez的第一个值,对于最后一个FREQHZSuprerFrez值将为零。

预期 output 具有 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

您正在寻找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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM