在选择列表中使用不同数量的列的联合?

ale*_*ale 0 sql union

我有这个问题,但我需要为所有人建立一个联盟.但是每个查询在select-list中有不同数量的列,这给了我错误:

使用UNION,INTERSECT或EXCEPT运算符组合的所有查询在其目标列表中必须具有相同数量的表达式.

我该如何解决这个问题以避免错误?

     Select 'Pregunta:(8-9-10)Totales No Coinciden' as Descripcion_Error, c_Fk_IdBoleta as Boleta,
       f_TotalAreaExtensionFinca as Extension_Total, f_TotalAreaDedicadaFinca 
       as Area_Dedicada_Finca, f_TotalAreaTenenciaFinca as Tenencia_Finca
      from Fnc_TenenciaUsoTierra
      where (f_TotalAreaExtensionFinca <> f_TotalAreaDedicadaFinca OR f_TotalAreaExtensionFinca <> f_TotalAreaTenenciaFinca) 
      AND  Fnc_TenenciaUsoTierra.c_Fk_IdBoleta = @id_Boleta


UNION 

SELECT 'Pregunta (12) El área sembrada es mayor al área dedicada a cultivos' as Descripcion_Error,
   c_Fk_IdBoleta as Boleta,
   (SELECT SUM(f_AreaDedicadaCultivos)
      FROM Fnc_TenenciaUsoTierra
      WHERE c_Fk_IdBoleta = sembrado.c_Fk_IdBoleta)
   AS AreaDedicadaCultivos,
   SUM(sembrado.f_AreaSiembra) as AreaSembrada
FROM
   Clt_Sembrado as sembrado
WHERE
   sembrado.c_Fk_IdBoleta = 45550711
GROUP BY sembrado.c_Fk_IdBoleta
HAVING SUM(sembrado.f_AreaSiembra) > (SELECT SUM(f_AreaDedicadaCultivos)
      FROM Fnc_TenenciaUsoTierra
      WHERE c_Fk_IdBoleta = sembrado.c_Fk_IdBoleta)
Run Code Online (Sandbox Code Playgroud)

Mar*_*ith 7

问题是查询的每个部分中的列数,而不是结果的数量.顶部有5列

  1. Descripcion_Error,
  2. Boleta
  3. Extension_Total,
  4. Area_Dedicada_Finca,
  5. Tenencia_Finca

底部有4个.

  1. Descripcion_Error,
  2. Boleta,
  3. AreaDedicadaCultivos,
  4. AreaSembrada

要将这些返回到一个结果集中,必须具有相同数量的列,并且相同序号位置中的列需要具有兼容的数据类型.

目前尚不清楚您期望的结果应该是什么样子.如果在第二个查询中没有合适的列添加,那么您可以添加一个常量表达式来代替其中一个列.在这种情况下,您可能希望UNION ALL而不是UNION(两者之间的差异是UNION添加额外的重复删除步骤),或者它们应该只是作为两个单独的结果返回到您的应用程序.