如何在SQL查询中访问当前/相同/自行列值

如何在SQL查询中访问当前/相同/自行列值,sql,sql-server,Sql,Sql Server,问题:我有一些公司提交审计报告。我需要准备一个报告栏,根据两个条件显示下一个日期 如果任何FormF表格有多行,则从最新表格的结束日期起一年,即“ReportingTo” 如果只找到一个FormF记录,则自“注册日期”起一年 代码: 尽可能避免在select列中执行子查询 ;WITH EntityCounts AS ( SELECT EntityID = F.EntityID, Amount = COUNT(1), LatestEndDat

问题:我有一些公司提交审计报告。我需要准备一个报告栏,根据两个条件显示下一个日期

  • 如果任何FormF表格有多行,则从最新表格的结束日期起一年,即“ReportingTo”

  • 如果只找到一个FormF记录,则自“注册日期”起一年

  • 代码:


    尽可能避免在select列中执行子查询

    ;WITH EntityCounts AS
    (
        SELECT
            EntityID = F.EntityID,
            Amount = COUNT(1),
            LatestEndDate = MAX(F.ReportingTo)
        FROM
            [db_owner].[FormF] AS F
        GROUP BY
            F.EntityID
    )
    SELECT
        F.ID,
        E.[Title (Title)],
        F.ReportingFrom,
        F.ReportingTo,
        E.RegistrationDate,
        AuditDueDate = CASE
            WHEN C.Amount > 1 THEN DATEADD(YEAR, 1 C.LatestEndDate)
            ELSE DATEADD(YEAR, 1, E.RegistrationDate) END
    FROM
        [db_owner].[FormF] AS F
        INNER JOIN EntityCounts AS C ON F.EntityID = C.EntityID
        INNER JOIN entity AS E ON F.EntityID = E.ID
    

    对子查询使用不同的表别名,并查看最外面的where子句。我确实更改了别名,但结果相同。我也不明白你们对“审查”最外层where条款的评论。“AditDueDate”发布的查询预期结果应显示“2019年4月2日”您的where is
    F.[EntityID]=F.[EntityID]
    ,这将说明显而易见的情况(在大多数情况下)。
    ;WITH EntityCounts AS
    (
        SELECT
            EntityID = F.EntityID,
            Amount = COUNT(1),
            LatestEndDate = MAX(F.ReportingTo)
        FROM
            [db_owner].[FormF] AS F
        GROUP BY
            F.EntityID
    )
    SELECT
        F.ID,
        E.[Title (Title)],
        F.ReportingFrom,
        F.ReportingTo,
        E.RegistrationDate,
        AuditDueDate = CASE
            WHEN C.Amount > 1 THEN DATEADD(YEAR, 1 C.LatestEndDate)
            ELSE DATEADD(YEAR, 1, E.RegistrationDate) END
    FROM
        [db_owner].[FormF] AS F
        INNER JOIN EntityCounts AS C ON F.EntityID = C.EntityID
        INNER JOIN entity AS E ON F.EntityID = E.ID