-2

Below query returns multiple rows as you can see in the image below.

I want to know how to return only one row with MAX seqno on it. Also note that I want to return all columns from the table here.

Appreciate you help.

SELECT * 
FROM dbo.SALESORD_HDR HD 
JOIN dbo.SALESORDHIST AS HI ON HD.SEQNO = HI.HEADER_SOURCE_SEQ
                            AND hi.FILEURL <> '' 
                            AND HI.EVENT_TYPE='D'

enter image description here

Ilyes
  • 14,640
  • 4
  • 29
  • 55
Crysis Hhtht
  • 131
  • 6

2 Answers2

5

How about ordering the records and selecting only the first one?

SELECT TOP 1 * 
FROM dbo.SALESORD_HDR HD 
JOIN dbo.SALESORDHIST AS HI ON HD.SEQNO = HI.HEADER_SOURCE_SEQ
                            AND hi.FILEURL <> '' 
                            AND HI.EVENT_TYPE='D'
ORDER BY HD.SEQNO DESC
Wolfgang Kais
  • 4,010
  • 2
  • 10
  • 17
1

This would work.

select * 
FROM dbo.SALESORD_HDR HD 
JOIN dbo.SALESORDHIST AS HI 
   ON HD.SEQNO = HI.HEADER_SOURCE_SEQ and hi.FILEURL <> '' AND HI.EVENT_TYPE='D'
WHERE HD.SEQNO = (
  SELECT MAX(HD.SEQNO) FROM dbo.SALESORD_HDR HD 
JOIN dbo.SALESORDHIST AS HI 
   ON HD.SEQNO = HI.HEADER_SOURCE_SEQ AND hi.FILEURL <> '' AND HI.EVENT_TYPE='D'
)
Derviş Kayımbaşıoğlu
  • 28,492
  • 4
  • 50
  • 72