Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQL Server 2018中使用Lag()忽略空值_Sql Server_Lag - Fatal编程技术网

Sql server 在SQL Server 2018中使用Lag()忽略空值

Sql server 在SQL Server 2018中使用Lag()忽略空值,sql-server,lag,Sql Server,Lag,我正在尝试将活动ID链接到Dispatch。在数据属性中,只有在创建分派时,才会填充attrib43 我要做的是在创建分派之前获取上一行的活动ID 附件是我正在使用的代码 Select sea.ROW_ID, sea.CREATED_DTTM,sea.SRA_SR_ID,sea.ATTRIB_43, tsk.CRT_DTS, tsk.TASK_DESC, datediff(ss,sea.CREATED_DTTM, tsk.CRT_DTS) as dd , seal.x_isp_notes

我正在尝试将活动ID链接到Dispatch。在数据属性中,只有在创建分派时,才会填充attrib43

我要做的是在创建分派之前获取上一行的活动ID

附件是我正在使用的代码

 Select  sea.ROW_ID, sea.CREATED_DTTM,sea.SRA_SR_ID,sea.ATTRIB_43, tsk.CRT_DTS, tsk.TASK_DESC, datediff(ss,sea.CREATED_DTTM, tsk.CRT_DTS) as dd 

, seal.x_isp_notes, seal.x_isp_comments, seal.comments, seal.x_isp_agent_desc

, tsk.TASK_SUB_TYPE_CD, tsk.TASK_TYPE_CD, tsk.WHAT_ID

, cdl.ORIGIN_NM
,LAG(sea.ROW_ID,1) over (partition by sea.ATTRIB_43 order by sea.CREATED_DTTM) AS 'FLAGID'

--, tsk.*,

, fdc.FISCAL_QUARTER

from GSEDATA.dbo.X_ISP_EXTRNL_CASE_ID sea

join rawdata.corp_ww.FISCAL_DAY_CALENDAR fdc on sea.CREATED_DATE = fdc.ACTUAL_DATE

left join rawdata.svc_base.SFDC_TASK_DTL tsk on sea.X_ISP_EXTRNL_CASE_ID = tsk.TASK_ID

left join rawdata.svc_base.SFDC_CASE_DTL cdl on cdl.case_id = tsk.what_id

left join GSEDATA.dbo.s_evt_act_logs seal on sea.ROW_ID = seal.row_id

where --sea.ATTRIB_43 = '04391481876'
sea.SRA_SR_ID = 'A-2Q7YF57W'

order by sea.CREATED_DTTM
但它并没有按照我的预期工作-Attrib 43的活动ID标志为空


如果我正确理解了您的问题,您将获得非空
attrib_43
的null
FLAGID
,因为您使用的是海上分区.attrib_43子句。 Partition by将查询结果集划分为多个分区。窗口函数分别应用于每个分区,并为每个分区重新启动计算。 这就是为什么将
ATTRIB_43
的空值分组到一个窗口中,而非空的
ATTRIB_43
将为每个不同的值提供一个单独的窗口,因此在每个窗口的第一行为
LAG()
函数提供一个
null
。 如果需要所有行的滞后值,则应删除子句
sea.ATTRIB_43

LAG(sea.ROW_ID,1) over (order by sea.CREATED_DTTM) AS 'FLAGID'

如果我正确理解了您的问题,您将获得非空
attrib_43
的null
FLAGID
,因为您正在使用sea.attrib_43分区。 Partition by将查询结果集划分为多个分区。窗口函数分别应用于每个分区,并为每个分区重新启动计算。 这就是为什么将
ATTRIB_43
的空值分组到一个窗口中,而非空的
ATTRIB_43
将为每个不同的值提供一个单独的窗口,因此在每个窗口的第一行为
LAG()
函数提供一个
null
。 如果需要所有行的滞后值,则应删除子句
sea.ATTRIB_43

LAG(sea.ROW_ID,1) over (order by sea.CREATED_DTTM) AS 'FLAGID'

我做对了-因为我使用了错误的列标题。非常感谢您的帮助,我做对了-因为我使用了错误的列标题。非常感谢你的帮助