2016-05-02 9 views
0

を働いた:UNIONクエリがSQL 2014に失敗し、私はそれがで失敗SQL 2014で次のクエリを実行すると、2008年に

SQL 2008で問題なく勤務
ORDER BY items must appear in the select list if the statement 
contains a UNION, INTERSECT or EXCEPT operator. 

を、私はここで何をしないのですか?

SELECT DISTINCT co.Region, 
co.CountryCode, 
co.CountryName, 
a.CUSTNMBR AS CustomerNo, 
r.SHRTNAME AS ShortName, 
r.PYMTRMID AS PaymentTerms, 
a.CUSTBLNC AS TotalBalance, 
a.AGPERAMT_1 AS CurrentBalance, 
a.AGPERAMT_2 AS Balance15Days, 
a.AGPERAMT_3 AS Balance30Days, 
a.AGPERAMT_4 AS Balance60Days, 
a.AGPERAMT_5 AS Balance90Days, 
a.AGPERAMT_6 AS Balance120Days, 
a.AGPERAMT_7 AS BalanceOver120Days 
FROM GREAT_PLAINS.ANSAC.dbo.RM00103 a 
JOIN GREAT_PLAINS.ANSAC.dbo.RM00101 r 
ON a.CUSTNMBR = r.CUSTNMBR 
JOIN Customers c 
ON r.CUSTNMBR = c.CustomerNo 
LEFT JOIN adminCountries co 
ON c.CountryCode = co.CountryCode 
WHERE a.CUSTBLNC <> 0 

UNION ALL 

SELECT CASE r.SALSTERR 
WHEN N'ASIA' THEN N'Asia' 
WHEN N'LATIN AMERICA' THEN N'Latin America' 
ELSE N'ROW' END AS Region, 
N'NX' AS CountryCode, 
N'National Accounts', 
a.CUSTNMBR AS CustomerNo, 
r.CUSTNAME AS ShortName, 
r.PYMTRMID AS PaymentTerms, 
a.CUSTBLNC, 
a.AGPERAMT_1, 
a.AGPERAMT_2, 
a.AGPERAMT_3, 
a.AGPERAMT_4, 
a.AGPERAMT_5, 
a.AGPERAMT_6, 
a.AGPERAMT_7 
FROM GREAT_PLAINS.ANSAC.dbo.RM00103 a 
JOIN GREAT_PLAINS.ANSAC.dbo.RM00101 r 
ON a.CUSTNMBR = r.CUSTNMBR 
WHERE LEFT(a.CUSTNMBR, 3) = 'NAT' AND 
a.CUSTBLNC <> 0 

ORDER BY co.Region, 
co.CountryCode, 
c.CustomerNo 
+5

ORDER BYのテーブルエイリアスを削除してみます。 –

+0

それはあなたに感謝しました。 – Tom

答えて

2

UNION ALLの間、両方のクエリに括弧を使用しようが、外BY ORDER残し:また、ORDER BYからエイリアスを削除

(SELECT DISTINCT co.Region, 
co.CountryCode, 
co.CountryName, 
a.CUSTNMBR AS CustomerNo, 
r.SHRTNAME AS ShortName, 
r.PYMTRMID AS PaymentTerms, 
a.CUSTBLNC AS TotalBalance, 
a.AGPERAMT_1 AS CurrentBalance, 
a.AGPERAMT_2 AS Balance15Days, 
a.AGPERAMT_3 AS Balance30Days, 
a.AGPERAMT_4 AS Balance60Days, 
a.AGPERAMT_5 AS Balance90Days, 
a.AGPERAMT_6 AS Balance120Days, 
a.AGPERAMT_7 AS BalanceOver120Days 
FROM GREAT_PLAINS.ANSAC.dbo.RM00103 a 
JOIN GREAT_PLAINS.ANSAC.dbo.RM00101 r 
ON a.CUSTNMBR = r.CUSTNMBR 
JOIN Customers c 
ON r.CUSTNMBR = c.CustomerNo 
LEFT JOIN adminCountries co 
ON c.CountryCode = co.CountryCode 
WHERE a.CUSTBLNC <> 0) 

UNION ALL 

(SELECT CASE r.SALSTERR 
WHEN N'ASIA' THEN N'Asia' 
WHEN N'LATIN AMERICA' THEN N'Latin America' 
ELSE N'ROW' END AS Region, 
N'NX' AS CountryCode, 
N'National Accounts', 
a.CUSTNMBR AS CustomerNo, 
r.CUSTNAME AS ShortName, 
r.PYMTRMID AS PaymentTerms, 
a.CUSTBLNC, 
a.AGPERAMT_1, 
a.AGPERAMT_2, 
a.AGPERAMT_3, 
a.AGPERAMT_4, 
a.AGPERAMT_5, 
a.AGPERAMT_6, 
a.AGPERAMT_7 
FROM GREAT_PLAINS.ANSAC.dbo.RM00103 a 
JOIN GREAT_PLAINS.ANSAC.dbo.RM00101 r 
ON a.CUSTNMBR = r.CUSTNMBR 
WHERE LEFT(a.CUSTNMBR, 3) = 'NAT' AND 
a.CUSTBLNC <> 0) 

ORDER BY Region, 
CountryCode, 
CustomerNo; 

を。

+1

カッコを追加することはできませんが、エイリアスを削除すると、ありがとうございます。 – Tom

+1

それは注文ですか?つまり、注文がかっこなしの場合は、2番目のクエリ(ユニオンクエリではない)だけを注文することができます。 –

+1

うん、それは正しく注文されています – Tom

関連する問題