我如何在一个声明中使用top和distinct我使用此但不成功。我不知道我做错了什么。
以下是我的陈述,我正在使用但是给了我例外。
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 )
答案 0 :(得分:4)
缺少子查询的表别名可能是导致错误的原因。您不需要子查询,可以同时使用Distinct
和Top
。
Top(n)
条记录取决于结果集的顺序。所以不要忘记明确订购你的结果。
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 ....
答案 1 :(得分:1)
这可能会有所帮助
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