SQL动态主管

时间:2018-12-18 23:15:05

标签: sql sql-server

我需要一种为LEAD函数SQL动态使用偏移量的方法。我的数据结构如下:

Sample Data

我要完成的工作是使用相同的D365Object从下一行检索GMLD的值,如下所示:

Results I Want

我对示例文件的查询如下:

SELECT [D365ODept],[D365OObject],[GMLDA]
FROM [JDE].[F0901]
WHERE isnumeric([D365OObject]) = 1  
GROUP BY [D365ODept],[D365OObject],[GMLDA]
ORDER BY [D365ODept],[D365OObject],[GMLDA]

1 个答案:

答案 0 :(得分:1)

根据@ZLK在评论中的建议...

CREATE TABLE F0901  
(
  D365ODept VARCHAR(50),
  D365OObject VARCHAR(10),
  GMLDA INT,
);

INSERT INTO F0901 (D365ODept, D365OObject, GMLDA) VALUES ('00', '01100', '6');
INSERT INTO F0901 (D365ODept, D365OObject, GMLDA) VALUES ('00', '01100', '7');
INSERT INTO F0901 (D365ODept, D365OObject, GMLDA) VALUES ('00', '01200', '5');
INSERT INTO F0901 (D365ODept, D365OObject, GMLDA) VALUES ('00', '01210', '6');
INSERT INTO F0901 (D365ODept, D365OObject, GMLDA) VALUES ('00', '01210', '7');
INSERT INTO F0901 (D365ODept, D365OObject, GMLDA) VALUES ('00', '01250', '6');

SELECT f.D365ODept
      ,f.D365OObject
      ,f.GMLDA
      ,LEAD(f.D365OObject) OVER (PARTITION BY f.GMLDA ORDER BY f.D365OObject) as next_D365OObject
  FROM F0901 f;

如果您选择在代码中包含构建和加载模式(而不是图像)的代码,那么会有更多的人对回答感兴趣。

点击此处了解how to format code blocks

希望这会有所帮助。