2012-01-18 161 views
2

我的查詢如下:ORDER BY子句中UNION ALL SQL查詢

SELECT 
ID,Bill_typeID,Cust_ID,Name,Reg_date,Account_Number,Amount,status 
FROM 
(
SELECT ID,Bill_typeID,Cust_ID,Name,Reg_date,Account_Number,Amount,status FROM Cust_Bill_Reg_M_Tbl 
UNION ALL 
SELECT ID,Bill_typeID,Cust_ID,Name,Reg_date,Account_Number,Amount,status FROM Rail_Ticket_Booking_M_Tbl 
) 
order by CONVERT(datetime, Reg_date, 101) desc 

我得到這個錯誤。

Msg 156, Level 15, State 1, Line 9 
Incorrect syntax near the keyword 'order'. 

我的查詢有什麼問題?如果它錯了,實際的方法是什麼?任何幫助將不勝感激。

回答

4

您需要別名派生表(TMP):

SELECT 
ID,Bill_typeID,Cust_ID,Name,Reg_date,Account_Number,Amount,status 
FROM 
( 
SELECT ID,Bill_typeID,Cust_ID,Name,Reg_date,Account_Number,Amount,status FROM Cust_Bill_Reg_M_Tbl 
UNION ALL 
SELECT ID,Bill_typeID,Cust_ID,Name,Reg_date,Account_Number,Amount,status FROM Rail_Ticket_Booking_M_Tbl 
) tmp 
order by CONVERT(datetime, Reg_date, 101) desc 
+0

............謝謝 – sun

1

您需要命名的子查詢,例如使用x

SELECT 
ID,Bill_typeID,Cust_ID,Name,Reg_date,Account_Number,Amount,status 
FROM 
(
SELECT ID,Bill_typeID,Cust_ID,Name,Reg_date,Account_Number,Amount,status FROM Cust_Bill_Reg_M_Tbl 
UNION ALL 
SELECT ID,Bill_typeID,Cust_ID,Name,Reg_date,Account_Number,Amount,status FROM Rail_Ticket_Booking_M_Tbl 
) x 
order by CONVERT(datetime, Reg_date, 101) desc 
1

你需要一個別名增加子查詢,如下所示:

SELECT 
    ID, 
    Bill_typeID, 
    Cust_ID, 
    Name, 
    Reg_date, 
    Account_Number, 
    Amount,status 
FROM 
(
    SELECT 
    ID, 
    Bill_typeID, 
    Cust_ID,Name, 
    Reg_date, 
    Account_Number, 
    Amount, 
    status 
    FROM Cust_Bill_Reg_M_Tbl 
    UNION ALL 
    SELECT 
    ID, 
    Bill_typeID, 
    Cust_ID, 
    Name, 
    Reg_date, 
    Account_Number, 
    Amount, 
    status 
    FROM Rail_Ticket_Booking_M_Tbl 
) Alias 
order by CONVERT(datetime, Reg_date, 101) desc 
+0

.........謝謝 – sun