簡體   English   中英

Oracle PL / SQL查詢順序問題與Distinct有關

[英]Oracle PL/SQL Query Order By issue with Distinct

有誰知道這個查詢有什么問題?

 SELECT DISTINCT c.CN as ClaimNumber, 
         a.ItemDate as BillReceivedDate, c.DTN as
 DocTrackNumber
         FROM ItemData a,
         ItemDataPage b,
         KeyGroupData c
         WHERE a.ItemTypeNum in (112, 113, 116, 172, 189)
         AND a.ItemNum = b.ItemNum
         AND b.ItemNum = c.ItemNum
         ORDER BY a.DateStored DESC;

我在職業生涯的大部分時間都做過T-Sql,這對我來說是正確的,但是這個查詢是針對Oracle數據庫而Toad只是將光標放在Order By部分的a.DateStored上。 我確信這對於任何做PL / SQL的人都是基本的。

謝謝!

[編輯]為了將來參考,SQL * Plus給出的錯誤是:“ORA-01791:不是SELECTed表達式”

您需要修改查詢:

SELECT DISTINCT c.CN as ClaimNumber, 
         a.ItemDate as BillReceivedDate, c.DTN as
 DocTrackNumber, a.DateStored
         FROM ItemData a,
         ItemDataPage b,
         KeyGroupData c
         WHERE a.ItemTypeNum in (112, 113, 116, 172, 189)
         AND a.ItemNum = b.ItemNum
         AND b.ItemNum = c.ItemNum
         ORDER BY a.DateStored DESC;

在進行DISTINCT時,您的訂單需要是所選列之一。

沒關系,在SQL Plus中執行給了我一個更豐富的答案。 DateStored需要在select語句中,所以這適用:

    SELECT DISTINCT c.CN as ClaimNumber,          
a.ItemDate as BillReceivedDate, 
c.DTN as DocTrackNumber, 
a.DateStored         
FROM ItemData a,         
ItemDataPage b,         
KeyGroupData c         
WHERE a.ItemTypeNum in (112, 113, 116, 172, 189)         
AND a.ItemNum = b.ItemNum         
AND b.ItemNum = c.ItemNum         
ORDER BY a.DateStored DESC;

我相信order by子句的元素也必須在select子句中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM