【发布时间】:2018-06-26 07:02:20
【问题描述】:
我知道以前有人问过这个问题,并且我查看了很多解决方案,但我无法调整任何解决方案来适应我的问题。 我想返回每个公司的行和具有最大日期的 complianceTypeID。
此查询显示我的数据。
SELECT [ComplianceItemID]
,[CorporationID]
,[Date]
,[ComplianceTypeID]
FROM [Compliance].[dbo].[ViewComplianceItem]
Where CorporationID = '869'
返回这个结果
ComplianceItemID CorporationID Date ComplianceTypeID
55761 869 2018-06-20 1
56840 869 2022-11-07 2
57919 869 1900-01-01 3
58998 869 1900-01-01 4
60077 869 1900-01-01 5
61156 869 1900-01-01 6
62235 869 1900-01-01 7
63316 869 2018-06-25 8
63322 869 2018-06-26 1
我只想返回每个 ComplianceTypeID 中日期最高的行
我稍后将参数化查询而不是固定的 CoprorationID。
我希望看到返回 8 行,应排除第 1 行,因为还有另一个 ComplianceTypeID 1 具有较新的日期。
我已经尝试过了,但只返回了 5 行,日期均为 '1900-01-01'
SELECT
VC1.ComplianceItemID,
VC1.CorporationID,
VC1.[Date],
VC1.ComplianceTypeID
FROM ViewComplianceItem VC1
Left Join ViewComplianceItem VC2
On VC1.ComplianceTypeID = VC2.ComplianceTypeID
AND VC1.[Date] > VC2.[Date]
Where VC2.[Date] is null
AND VC1.CorporationID = '869'
结果
ComplianceItemID CorporationID Date ComplianceTypeID
57919 869 1900-01-01 3
58998 869 1900-01-01 4
60077 869 1900-01-01 5
61156 869 1900-01-01 6
62235 869 1900-01-01 7
似乎还有许多其他方法可以解决这个问题。 我只需要一个有效的 :) 我已经绞尽脑汁半天了,没有进步。
感谢您的帮助 大卫
【问题讨论】:
标签: sql sql-server sql-server-2008-r2