2017-06-05 45 views
1

我有3個表,我想聯合所有但只有兩列能夠顯示數據。聯盟3表與特定列

SELECT Vehicle_ID, Total_Weight, date, bilty_No FROM harvesting 
UNION 
SELECT Vehicle_ID, Total_Weight, date, Bilty_No FROM Blade_Harvesting 

我要添加另一個表像之下,但它給錯誤

SELECT Vehicle_ID, Total_Weight, date, bilty_No FROM harvesting 
UNION 
SELECT Vehicle_ID, Total_Weight, date, Bilty_No FROM Blade_Harvesting 
UNION 
SELECT Vehicle_ID, Vehicle_Name FROM Vehicle 

它給這個錯誤:

All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists

+0

在Vehicle table的第三條select語句中,必須選擇四個具有類似數據類型的列到上面兩個表的第3列和第4列。 –

+1

在大多數數據庫中,UNION查詢的所有部分中列的數目_and_類型都有是一樣的。因此,如果您選擇號碼,號碼,日期,號碼,那麼'UNION'中的所有查詢都必須遵循。 –

+0

請發送查詢...我是新的.. –

回答

0

UNION每個SELECT語句必須具有相同的列數。 這些列還必須具有相似的數據類型。 每個SELECT語句中的列也必須以相同的順序

試試這個

SELECT Vehicle_ID,cast(Total_Weight as varchar),date,bilty_No FROM harvesting 
UNION 
SELECT Vehicle_ID,cast(Total_Weight as varchar),date,Bilty_No FROM Blade_Harvesting 
union 
select Vehicle_ID,Vehicle_Name,'','' from Vehicle 
+0

它給出錯誤.q ..將nvarchar值'TX-001'轉換爲數據類型int時,轉換失敗。 –

+0

,這是因爲你的'Total_Weight'列是數據類型'INT',而'Vehicle_Name'是'Varchar'字段,所以你的'Total_Weight'強制轉換爲varchar。我已經編輯了答案 – Hexxx

+0

感謝兄弟爲我工作...非常感謝.. –

1

您必須將所有的UNION SELECT子句中指定等於列:

SELECT Vehicle_ID VehicleId, Total_Weight TotalWeight,date,bilty_No 
      biltyNo,'' VehicleName 
    FROM harvesting 
    UNION ALL 
    SELECT Vehicle_ID VehicleId, Total_Weight TotalWeight,date,Bilty_No 
      biltyNo ,'' VehicleName 
    FROM Blade_Harvesting 
    UNION ALL 
    SELECT Vehicle_ID VehicleId ,0 TotalWeight,'' date ,'' biltyNo 
      ,Vehicle_Name VehicleName 
    FROM Vehicle 
+0

謝謝兄弟....它適用於我.. –

+0

爲什麼不是NULL呢? – jarlh

+0

我有一點問題,查詢運行得很好,但當我檢查數據顯示6行數據,但是當我檢查我的實際數據庫時,它應該顯示4行。就像我有3行收穫表和1行blade_harvesting表所以結果應顯示4行...請幫助 –

0

請用戶:

SELECT Vehicle_ID,Total_Weight,date,Bilty_No,'AS Vehicle_Name FROM harvesting

UNION SELECT Vehicle_ID,Total_Weight,日期,Bilty_No '' AS Vehicle_Name FROM Blade_Harvesting

UNION SELECT Vehicle_ID, '0' AS Total_Weight,NULL AS日期, '0' AS Bilty_No,Vehicle_Name FROM車輛

+0

我想顯示vehicle_name,而不是所有行上的vehicle_ID –