2017-06-05 32 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 –