2008-10-28 60 views
7

有谁知道这个查询有什么问题吗?Oracle PL/SQL查询顺序通过不同的问题

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数据库和蟾蜍只是将光标在a.DateStored在ORDER BY部分。我确信这对于任何正在使用PL/SQL的人来说都是最基本的。

谢谢!

[编辑]对于未来的参考,通过在SQL * Plus提供的错误是: “ORA-01791:没有选定的表达”

回答

15

您需要查询修改为这样:

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订单的需要是一个选定的列。

2

没关系,在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; 
+0

只是,我得出的结论... – Carl 2008-10-28 14:25:16

+0

如果你在这里留下这个问题,以供将来参考,然后我们也许应该注意到,给出的错误是: ORA-01791:没有选定的表达 – Carl 2008-10-28 14:26:54

2

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