2016-01-20 49 views
0

查詢:SQLEXCEPTION(0x80131904):所有的查詢使用UNION合併相交

USE [IEC] 
GO 

ALTER VIEW [dbo].[V_AllOA] 
AS 
    SELECT ROW_NUMBER() OVER (ORDER BY OrderId) OAId, 
      * 
    FROM (
     SELECT * 
     FROM BranchOrder 
     WHERE Flag IN (1, 2) 
      UNION 
     SELECT * 
     FROM BranchOrder12_13 
     WHERE flag IN (1, 2) 
      UNION 
     SELECT * 
     FROM BranchOrder11_12 
     WHERE flag IN (1, 2) 
    ) a 

GO 

enter image description here

+0

嗨,歡迎光臨。你有什麼問題?並且請顯示代碼。 – Stefan

+1

錯誤消息告訴您究竟要查找什麼。 –

+0

告訴我如何解決這個 –

回答

1

使用聯合時,您必須確保所有列,包括它們的ORDER類型是相同的。

例如:表1

ID, NAME , LASTNAME 
1 'john'  'smith' 

表2 -

ID , NAME , MIDDLENAME , LASTNAME 
4 'john' 'bing'  'smith' 

在上面的例子中,這兩個表可以使用select *的,因爲他們有不同的列數不工會。

在這種情況下,您可以指定這兩個表上顯示在你的SELECT語句這樣的相同列:

SELECT ID,NAME,LASTNAME from table1 
UNION 
SELECT ID,NAME,LASTNAME from table2 

這是一個正確的查詢。

SELECT * FROM table1 
UNION 
SELECT * FROM TABLE2 

這不是一個正確的查詢。

2

你的表BranchOrder,BranchOrder12_13,BranchOrder11_12有不同的列數。它們必須都有確切的列數,它們必須是相同的順序 - 我的意思是如果第一個表中的第一列是整數,其他表中的第一列也必須是整數。