In SQL Server ho sempre trovato un problema ottenere le righe massime per un set di dati, sto cercando un elenco dei metodi per recuperare le righe massime con alcune indicazioni su prestazioni e manutenibilità.
Tabella di esempio:
DECLARE @Test TABLE (ID INT IDENTITY(1,1), name VARCHAR(50),
dateOfBirth DATETIME, TaxNumber varchar(10))
INSERT INTO @Test (name, dateOfBirth, TaxNumber)
SELECT 'Fred', convert(datetime, '25/01/1976', 103), '123' UNION ALL
SELECT 'Bob', convert(datetime, '03/03/1976', 103), '234' UNION ALL
SELECT 'Jane', convert(datetime, '13/06/1996', 103), '345' UNION ALL
SELECT 'Fred', convert(datetime, '14/02/1982', 103), '456' UNION ALL
SELECT 'Bob', convert(datetime, '25/10/1983', 103), '567' UNION ALL
SELECT 'Jane', convert(datetime, '12/04/1995', 103), '678' UNION ALL
SELECT 'Fred', convert(datetime, '03/03/1976', 103), '789'
select * from @Test
dà:
ID name dateOfBirth TaxNumber
----------- --------- ----------------------- ----------
1 Fred 1976-01-25 00:00:00.000 123
2 Bob 1976-03-03 00:00:00.000 234
3 Jane 1996-06-13 00:00:00.000 345
4 Fred 1982-02-14 00:00:00.000 456
5 Bob 1983-10-25 00:00:00.000 567
6 Jane 1995-04-12 00:00:00.000 678
7 Fred 1976-03-03 00:00:00.000 789
Se desidero recuperare i dettagli completi della persona più anziana (raggruppa per nome), quali metodi posso usare?
Uscita desiderata:
ID name dateOfBirth TaxNumber
----------- --------- ----------------------- ----------
1 Fred 1976-01-25 00:00:00.000 123
2 Bob 1976-03-03 00:00:00.000 234
6 Jane 1995-04-12 00:00:00.000 678