【发布时间】:2016-06-29 12:29:36
【问题描述】:
我有一张桌子,看起来像:
这可以从下面的代码重新创建:
CREATE TABLE dbo.EmpnoProblem
(
DATE date NULL,
WORKNO nvarchar(50) NULL,
OPSEQ int NULL,
RELEASED nchar(10) NULL,
PRODUCT nvarchar(50) NULL,
EMPNO nvarchar(50) NULL
) ;
INSERT INTO [dbo].[EmpnoProblem] (DATE, WORKNO, OPSEQ, RELEASED, PRODUCT, EMPNO)
VALUES ('2016-06-16', '12345', 10, '10', '5454ABC', NULL);
INSERT INTO [dbo].[EmpnoProblem] (DATE, WORKNO, OPSEQ, RELEASED, PRODUCT, EMPNO)
VALUES ('2016-06-16', '12345', 20, '10', '5454ABC', NULL);
INSERT INTO [dbo].[EmpnoProblem] (DATE, WORKNO, OPSEQ, RELEASED, PRODUCT, EMPNO)
VALUES ('2016-06-16', '12345', 30, '10', '5454ABC', '345');
INSERT INTO [dbo].[EmpnoProblem] (DATE, WORKNO, OPSEQ, RELEASED, PRODUCT, EMPNO)
VALUES ('2016-06-16', '12345', 40, '10', '5454ABC', '345');
INSERT INTO [dbo].[EmpnoProblem] (DATE, WORKNO, OPSEQ, RELEASED, PRODUCT, EMPNO)
VALUES ('2016-06-16', '12345', 50, '10', '5454ABC', NULL);
INSERT INTO [dbo].[EmpnoProblem] (DATE, WORKNO, OPSEQ, RELEASED, PRODUCT, EMPNO)
VALUES ('2016-06-16', '12345', 60, '10', '5454ABC', NULL);
INSERT INTO [dbo].[EmpnoProblem] (DATE, WORKNO, OPSEQ, RELEASED, PRODUCT, EMPNO)
VALUES ('2016-06-16', '12345', 70, '10', '5454ABC', '698');
INSERT INTO [dbo].[EmpnoProblem] (DATE, WORKNO, OPSEQ, RELEASED, PRODUCT, EMPNO)
VALUES ('2016-06-16', '12345', 80, '10', '5454ABC', NULL);
INSERT INTO [dbo].[EmpnoProblem] (DATE, WORKNO, OPSEQ, RELEASED, PRODUCT, EMPNO)
VALUES ('2016-06-16', '12345', 90, '10', '5454ABC', NULL);
我需要填充 EMPNO 列。
当 3 列相同时:WORKNO、RELEASED、PRODUCT,我正在处理一个单独的分组,我的数据集由这些分组组成。
在这个分组中,如果一个 EMPNO 为空,那么首先它需要由下一个不为空的 EMPNO 填充(这可能是多个条目)。下一个 EMPNO 下降由 OPSEQ 编号确定。如果分组中没有不为空的 EMPNO(例如末尾的两个空条目),则需要由其上方的最后一个不为空的 EMPNO 填充。
表格应如下所示:
抱歉,我没有尝试代码。我不知道从哪里开始。任何指针都将不胜感激。
【问题讨论】:
-
什么版本的sql-server?
-
您将 OPSEQ 50 编码为 698,但根据您的要求,它将设置为 345。您需要稍微调整一下您的要求。如果你能弄清楚那个细节,这应该很容易完成。
-
嘿乔,不应该是 698,因为我正在寻找下一个 EMPNO,而不是上面的那个。
-
从 50 向下的下一个数字为空,您在这种情况下声明使用上面的数字。您必须指组中的任何一行,而不是下一行。
-
对不起,我将编辑问题以使其更清楚。我的意思是说,如果在空值以下的任何级别都没有 EMPNO - 例如,最后的两个空值,请看上面的最后一个不为空的条目。在所有其他情况下,查找下一个不为空的 EMPNO 条目。
标签: sql sql-server tsql sql-server-2012