SQL每日一题(20220728)


参考:https://mp.weixin.qq.com/s?__biz=MzA3MTg4NjY4Mw==&mid=2457328780&idx=3&sn=2a8e460050381bdc794913173d315884&chksm=88a5ceb8bfd247ae589430ef72ff653c000e041829a8154a3ad27c7350b687bbfdcf0ad5bb96&scene=178&cur_album_id=1790847024611852294#rd

220728

题目

原始数据如下:

Carrier_NameOrderNumberReSumCost
临时JOY19080300003170.00
张三JOY19080300003170.00
临时JOY19080300004196.50
张三JOY19080300004196.50
临时JOY19080300006458.80
张三JOY19080300006458.80
李四JOY19080300007272.00
李四JOY19080300008315.00
临时JOY19080300008315.00

相同OrderNumber只取一条ReSumCost的结果,希望得到:

Carrier_NameOrderNumberReSumCostNewReSumCost
临时JOY19080300003170.00170.00
张三JOY19080300003170.000.00
临时JOY19080300004196.50196.50
张三JOY19080300004196.500.00
临时JOY19080300006458.80458.80
张三JOY19080300006458.800.00
李四JOY19080300007272.00272.00
李四JOY19080300008315.00315.00
临时JOY19080300008315.000.00

数据脚本

CREATE TABLE F0728
(
    Carrier_Name NVARCHAR(10)   NOT NULL,
    OrderNumber  VARCHAR(20)    NOT NULL,
    ReSumCost    DECIMAL(10, 2) NOT NULL
);

INSERT INTO F0728 VALUES('临时', 'JOY19080300003', 170);
INSERT INTO F0728 VALUES('张三', 'JOY19080300003', 170);
INSERT INTO F0728 VALUES('临时', 'JOY19080300004', 196.5);
INSERT INTO F0728 VALUES('张三', 'JOY19080300004', 196.5);
INSERT INTO F0728 VALUES('临时', 'JOY19080300006', 458.8);
INSERT INTO F0728 VALUES('张三', 'JOY19080300006', 458.8);
INSERT INTO F0728 VALUES('李四', 'JOY19080300007', 272);
INSERT INTO F0728 VALUES('李四', 'JOY19080300008', 315);
INSERT INTO F0728 VALUES('临时', 'JOY19080300008', 315);

我的答案


参考答案

select *,
       IF(LAG(OrderNumber)
              over (partition by OrderNumber order by OrderNumber) = OrderNumber
           , 0, ReSumCost) NewReSumCost
from f0728;

原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/278259.html

(0)
上一篇 2022年8月1日
下一篇 2022年8月1日

相关推荐

发表回复

登录后才能评论