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