我想找到多个最长日期。我试过分组,但它只显示了最大最大日期。我感谢你的帮助。
MemberID Contract Group Date
1 A 8 11/22/2016
1 A 61 10/19/2016
1 A 61 11/19/2015
1 A 8 7/26/2015
1 A 8 7/17/2014
1 A 8 7/17/2013
1 A 8 5/17/2013
1 A 8 3/26/2013
理想的结果是:
MemberID Contract Group Date
1 A 8 11/22/2016
1 A 61 10/19/2016
1 A 8 7/26/2015
会员ID 1,合同A,第8组的两个最长日期。
提前感谢您的帮助。
答案 0 :(得分:0)
我写这个假设你要比较其他群体。
DECLARE @priorGroup int = 8; -- Just change these two
DECLARE @currentGroup int = 61; -- numbers to compare other groups
WITH max_Dates AS (
SELECT MemberID,[Contract],[Group],MAX([Date]) AS 'Date'
FROM Table_1
WHERE [Group] IN (@priorGroup,@currentGroup)
GROUP BY MemberID,[Contract],[Group])
SELECT *
FROM max_Dates
WHERE [Group] = @priorGroup
UNION
SELECT TOP 1 MemberID,[Contract],[Group],MAX([Date]) AS 'Date'
FROM Table_1
WHERE [Group] = @priorGroup
AND
[Date] < (SELECT [Date]
FROM max_Dates
WHERE [Group] = @currentGroup)
GROUP BY MemberID,[Contract],[Group]
或者你可以试试这个日期在同一行
DECLARE @priorGroup int = 8;
DECLARE @currentGroup int = 61;
WITH max_Dates AS (
SELECT MemberID,[Contract],[Group],MAX([Date]) AS 'Date'
FROM Table_1
WHERE [Group] IN (@priorGroup,@currentGroup)
GROUP BY MemberID,[Contract],[Group])
SELECT MemberID,[Contract],[Group],
(SELECT TOP 1 MAX([Date]) AS 'Date'
FROM Table_1
WHERE [Group] = @priorGroup
AND
[Date] < (SELECT [Date]
FROM max_Dates
WHERE [Group] = @currentGroup)
GROUP BY MemberID,[Contract],[Group]) AS 'PriorMax',
(SELECT [Date]
FROM max_Dates
WHERE [Group] = @priorGroup) AS 'Current Max'
FROM max_Dates
WHERE [Group] = @priorGroup