我有3列。 SSN |账户号码| Opendate里 1 SSN可能有多个AccountNumbers 每个AccountNumber都有一个相应的OpenDate
在我的列表中,我有很多SSN,每个都包含几个可能在不同日期打开的帐号。
我希望我的查询结果为SSN |最早的OpenDate | AccountNumber,与最早的opendate相对应。
我正在处理大约200,000条记录。
编辑:首先我做了 从表组按SSN,AccountNumber选择SSN,min(OpenDate),AcctNumber 但这并没有给我正确的数据。 The raw data gives me something like this:
SSN | AcctNumber | OpenDate
---------------------------
10 101 Jan
10 102 Feb
10 103 Mar
我得到10,Jan和AccNumber 102这不是与Jan OpenDate相关联的帐号在查看其他人后,我发现我得到的帐号只是与该SSN相关的帐号之一而不是与min(OpenDate)对应的那个
答案 0 :(得分:0)
如果您的表格如下:
SSN | AcctNumber | OpenDate
---------------------------
10 101 April
10 101 May
10 102 April
20 201 June
20 201 July
您希望您的查询返回此内容吗?
SSN | AcctNumber | OpenDate
---------------------------
10 101 April
10 102 April
20 201 June
然后你会使用这个查询:
select ssn, min(OpenDate), acctNumber from tbl group by ssn, acctNumber
答案 1 :(得分:0)
你可以试试这个..
select SSN , AcctNumber, OpenDate
from (SELECT SSN , AcctNumber, OpenDate
, ROW_NUMBER() OVER ( PARTITION BY SSN, ORDER BY OpenDate ASC ) AS RN
FROM table) AS temp
WHERE temp.RN= 1
答案 2 :(得分:0)
WITH CTE AS(选择SSN,AcctNumber,OpenDate,ROW_NUM()OVER(按SSN ORDER by OpenDate DESC划分)AS RN)SELECT SSN,AcctNumber,OpenDate FROM CTE WHERE RN = 1;