Click here to Skip to main content
15,891,657 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi,

i have below table and the records are



CREATE TABLE [dbo].[Trn_ATN](
	[ATN_No] [numeric](18, 0) NULL,
	[ATN_Number] [nvarchar](50) NULL,
	[ATN_Date] [date] NULL,
	[ATN_AstNo] [numeric](18, 0) NULL
) ON [PRIMARY]

GO


datas are

insert into Trn_ATN (ATN_No,ATN_Number,ATN_Date,ATN_AstNo) values(1,'A-1','2016-01-01',1)
insert into Trn_ATN (ATN_No,ATN_Number,ATN_Date,ATN_AstNo) values(2,'A-1','2016-01-01',2)
insert into Trn_ATN (ATN_No,ATN_Number,ATN_Date,ATN_AstNo) values(3,'A-2','2016-01-02',1)
insert into Trn_ATN (ATN_No,ATN_Number,ATN_Date,ATN_AstNo) values(4,'A-4','2016-01-02',2)
insert into Trn_ATN (ATN_No,ATN_Number,ATN_Date,ATN_AstNo) values(5,'A-3','2016-01-03',1)


what was the last ATN_Date and ATN_AstNo.

below is the result what i want.

ATN_No	ATN_Number	ATN_Date	ATN_AstNo
2	     A-1	   1/1/2016	       2
3	     A-2	   1/2/2016	       1

Thanks
Basit.


What I have tried:

i tried below query

SELECT
TOP 2
* FROM dbo.Trn_ATN
WHERE EXISTS (
SELECT
TOP 2
ATN_No
,ATN_Date
,ATN_AstNo
FROM 
dbo.Trn_ATN
ORDER BY ATN_Date,ATN_AstNo DESC
)


then result came

ATN_No	ATN_Number	ATN_Date	ATN_AstNo
1	          A-1	         2016-01-01	1
2	          A-1	         2016-01-01	2
Posted
Updated 24-Jan-17 3:25am

1 solution

Try:
SQL
SELECT ATN_No, ATN_Date, ATN_AstNo
FROM (SELECT ATN_No, ATN_Date, ATN_AstNo, 
             ROW_NUMBER() OVER (ORDER BY ATN_Date,ATN_AstNo DES) AS RowNum
      FROM dbo.Trn_ATN
     ) AS MyDerivedTable
WHERE MyDerivedTable.RowNum = 2
 
Share this answer
 
Comments
basitsar 24-Jan-17 9:31am    
Many Many Thanks but the result of above query is

ATN_No ATN_Date ATN_AstNo
1 2016-01-01 1
OriginalGriff 24-Jan-17 9:34am    
And you can't work out how to fix that on your own?
Add a column, rearrange the existing ones in the outer SELECT...
basitsar 24-Jan-17 9:43am    
Thanks a lot.
below query is giving me second last record
select * from Trn_ATN where ATN_No=(select max(ATN_No)-1 from Trn_ATN)

but i want to show the record depend on ATN_AstNo

Thanks
Basit.
basitsar 24-Jan-17 10:11am    
Thanks for your help.
below is the query which solved my problem

SELECT *
FROM Trn_ATN a
WHERE
2 = (SELECT count(DISTINCT(b.ATN_Date))
FROM Trn_ATN b WHERE
a.ATN_Date <= b.ATN_Date and a.ATN_AstNo=b.ATN_AstNo)

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900