2012-01-18 2 views
2

Ma requête est la suivante:Trier par clause UNION ALL requête 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 

J'ai eu cette erreur.

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

Quel est le problème avec ma requête? Si c'est faux, quelle est la méthode actuelle? Toute aide serait appréciée.

Répondre

4

Vous devez créer un alias de la table dérivée (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

............ merci – sun

1

Vous devez nommer votre sous-requête, par exemple en utilisant 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

Vous devez ajouter un alias à sous-requête, comme ceci:

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

......... Merci – sun