获取Server中每一行的单列差异。
在我的表中,ORIGINAL_DATA是我的当前列,希望生成新的EXPECTED_OUTPUT列,并显示每一行的差异。
比如40-30 = 10,30-25 = 5,25-10 = 15。
SELECT 10 ORIGINAL_DATA,0 EXPECTED_OUTPUT UNION
SELECT 25, 15 UNION
SELECT 30, 5 UNION
SELECT 40, 10 我使用过LEAD函数,但我的当前版本Server不支持它。
所以你能帮我解决这个没有LEAD和SELF JOIN的问题吗?
由于我的查询已经花费了太多的时间,这里我只提到了示例数据。
发布于 2014-01-29 06:09:06
尝尝这个
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;发布于 2014-01-29 06:14:38
试一试,按表结构按A修改SQL脚本,按B顺序更改SQL脚本
SELECT ORIGINAL_DATA,
ORIGINAL_DATA-LEAD(ORIGINAL_DATA, 1, 0) OVER (PARTITION BY A ORDER BY B DESC) AS EXPECTED_OUTPUT
FROM Table1 https://stackoverflow.com/questions/21423320
复制相似问题