【发布时间】:2020-09-20 15:47:06
【问题描述】:
我正在尝试将多个表中的数据插入到一个结果表中。
但是,由于我在 SELECT / GROUP BY 中使用 Lead() 函数 - 用于创建其中一个字段,所以我遇到了错误:
窗口函数只能出现在 SELECT 或 ORDER BY 子句中
我应该如何修改我的代码才能正常工作?
USE [WH];
INSERT INTO [exp].[Profile] (
[MedicalConditionFK]
, [EHRProgramFK]
, [EffectiveDate]
, [ExpirationDate]
)
SELECT
c.medicalcondition_id
, Max(ISNULL(epi.[EHRProgramFK], -1)) AS [EHRProgramFK]
, p.[effective_date] AS [EffectiveDate]
, DateAdd(day, -1, lead (p.[effective_date], 1, '2050-12-31') OVER
(partition by p.[client_id], c.[medicalcondition_id] Order By
p.[effective_date])) AS [ExpirationDate]
FROM
[exp].[Condition] c
INNER JOIN [exp].[Medical] p ON
c.[ClientMedicalProfile_id] = p.[ClientMedicalProfile_id]
LEFT JOIN [exp].[Episode] epi ON
(p.[effective_date] BETWEEN epi.[AdmissionDate]
AND epi.[DischargeDate] and epi.[DBCode] = 'CS-SM')
WHERE
(p.[effective_date] IS NOT NULL)
GROUP BY
c.medicalcondition_id
, p.[effective_date]
, DateAdd(day, -1, lead (p.[effective_date], 1, '2050-12-31') OVER
(partition by p.[client_id], c.[medicalcondition_id] Order By p.[effective_date]))
【问题讨论】:
标签: sql-server tsql select sql-insert window-functions