2016-12-30 33 views
-2

我很確定這是應用正確的別名的問題,我只是不確定我要出錯的位置。本身從嵌套子查詢聯合中選擇

Select Z.DesiredResult1, etc... 
from (
    Select C.columns 
     from (
     Select B.columns 
      from (
       Select A.columns 
       from (Subquery) as A 
      ) as B 
     ) as C 
    Where C.condition = 1 
    UNION 
    Select F.columns 
     from (
     Select E.columns 
      from (
       Select D.columns 
       from (Subquery) as D 
      ) as E 
     ) as F 
    Where F.condition = 2 
) as Z 

工會功能完美,但努力使SELECT語句從它(如上圖所示),當它拋出一個錯誤:我在SQLSERVER看着下面的UNION

No column name was specified for column 1 of 'Z'

任何見解,將不勝感激,感謝幫助SQL新手。

編輯:解決 - 我誤解了錯誤。問題是一個聚合函數需要一個別名,而不是整個子查詢。留下未命名的聚合列對單獨工會來說工作得很好,所以我甚至沒有考慮它。感謝您的閱讀。

+0

沒有'在F,C和沒有'DesiredResult1'在Z. – GurV

+0

此外condition'列,目的是什麼做你正在做什麼? – GurV

+1

您需要添加完整的列列表。你的錯誤在那裏。 – Sefe

回答

0

這個錯誤可以很容易地複製。檢查它here

如果你不命名單一UNION

SELECT * 
FROM (SELECT 'A','B') T1 
UNION 
SELECT * 
FROM (SELECT 'C','D') T2 

列,您將得到同樣的錯誤:

No column name was specified for column 1 of 'T1'.

No column name was specified for column 2 of 'T1'.

No column name was specified for column 1 of 'T2'.

No column name was specified for column 2 of 'T2'.

簡單的命名具有相同名稱的每個公共列。

SELECT T3.Result1, T3.Result2 
FROM 
    (SELECT * 
    FROM (SELECT 'A' Result1, 'B' Result2) T1 
    UNION 
    SELECT * 
    FROM (SELECT 'C' Result1, 'D' Result2) T2) T3 

+----+---------+---------+ 
| | Result1 | Result2 | 
+----+---------+---------+ 
| 1 | A | B | 
+----+---------+---------+ 
| 2 | C | D | 
+----+---------+---------+