【问题标题】:T-SQL Lead () function issue while using GROUP BY clause使用 GROUP BY 子句时的 T-SQL Lead () 函数问题
【发布时间】: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


    【解决方案1】:

    为了使您的查询有效,您需要将窗口函数中使用的列放在group by 子句中(而不是窗口函数本身)。

    基本上这意味着您必须添加列client_id

    GROUP BY
        c.medicalcondition_id,
        p.[effective_date],
        p.[client_id]
    

    虽然这将避免语法错误,但我无法判断这是否会产生您想要的结果集。为此,您可能需要提出一个新问题,提供适当的样本数据和所需的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-07
      • 1970-01-01
      • 2013-01-27
      • 2011-01-03
      • 2012-12-07
      • 1970-01-01
      • 2021-11-13
      • 2010-10-19
      相关资源
      最近更新 更多