首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server ( LEAD函数的替代)中的单列和行差

Server ( LEAD函数的替代)中的单列和行差
EN

Stack Overflow用户
提问于 2014-01-29 06:04:08
回答 2查看 113关注 0票数 0

获取Server中每一行的单列差异。

在我的表中,ORIGINAL_DATA是我的当前列,希望生成新的EXPECTED_OUTPUT列,并显示每一行的差异。

比如40-30 = 10,30-25 = 5,25-10 = 15。

代码语言:javascript
复制
SELECT 10 ORIGINAL_DATA,0 EXPECTED_OUTPUT   UNION
SELECT 25, 15  UNION
SELECT 30, 5   UNION
SELECT 40, 10   

我使用过LEAD函数,但我的当前版本Server不支持它。

所以你能帮我解决这个没有LEADSELF JOIN的问题吗?

由于我的查询已经花费了太多的时间,这里我只提到了示例数据。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-29 06:09:06

尝尝这个

代码语言:javascript
复制
WITH    rows AS
        (SELECT  Column1 ,ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rn
         FROM   (
            SELECT 10 Column1 UNION
            SELECT 25 UNION
            SELECT 30 UNION
            SELECT 40
        )M)
SELECT 
--mp.Column1 ,
mc.Column1,
--mc.rn,
--mp.rn,
CAST(mc.Column1 AS float) - CAST(mp.Column1 AS float) EXPECTED_OUTPUT
FROM    rows mc
LEFT JOIN    rows mp
ON   mp.rn = mc.rn - 1;
票数 1
EN

Stack Overflow用户

发布于 2014-01-29 06:14:38

试一试,按表结构按A修改SQL脚本,按B顺序更改SQL脚本

代码语言:javascript
复制
SELECT  ORIGINAL_DATA, 
ORIGINAL_DATA-LEAD(ORIGINAL_DATA, 1, 0) OVER (PARTITION BY A ORDER BY B DESC) AS     EXPECTED_OUTPUT   
FROM Table1    
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21423320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档