Reputation: 329
How can i use top and distinct in one statement i am using this but not success . I dont know what i am doing wrong .
Below is my statement that i am using but giving me exception.
SELECT TOP 30 * from
(
SELECT DISTINCT
Bill.CLIENTID,Bill.TRANDATE,Bill.TRANTYPE,Bill.DUE,Bill.AMOUNT,Bill.paid,ORDE_.INVDATE ,Bill.TRANDESC,Bill.INVNUM
FROM BILLING Bill LEFT OUTER JOIN ORDE_ ON Orde_.INVNUM = Bill.INVNUM
WHERE Bill.CLIENTID = 1047 )
Upvotes: 1
Views: 155
Reputation: 33839
Missing table alias for the subquery may be the cause of your error. You don't need a subquery, you can use both Distinct
and Top
together.
Top(n)
records depend on the order of the result set. So don't forget to explicitly Order your results.
SELECT DISTINCT TOP(30) Bill.CLIENTID,Bill.TRANDATE,Bill.TRANTYPE,Bill.DUE,Bill.AMOUNT,
Bill.paid,ORDE_.INVDATE ,Bill.TRANDESC,Bill.INVNUM
FROM BILLING Bill LEFT OUTER JOIN ORDE_ ON Orde_.INVNUM = Bill.INVNUM
WHERE Bill.CLIENTID = 1047
ORDER BY ....
Upvotes: 4
Reputation: 13484
It may help
SELECT TOP 30 * from
(
SELECT DISTINCT
Bill.CLIENTID,Bill.TRANDATE,Bill.TRANTYPE,Bill.DUE,Bill.AMOUNT,Bill.paid,ORDE_.INVDATE ,Bill.TRANDESC,Bill.INVNUM
FROM BILLING Bill LEFT OUTER JOIN ORDE_ ON Orde_.INVNUM = Bill.INVNUM
WHERE Bill.CLIENTID = 1047 ) Alias
Upvotes: 1