尝试合并来自两个不同表的两个选择时出现错误

Posted

技术标签:

【中文标题】尝试合并来自两个不同表的两个选择时出现错误【英文标题】:I got error when try to union two selects from two differents tables 【发布时间】:2019-03-27 09:36:49 【问题描述】:

所以伙计们,我创建了一个 veiw 来重新组合两个表中的信息(表 A 中存在信息,但表 b 中不存在信息,并且 vise verca 中存在信息

USE [DATAWARHOUSE]
GO

/****** Object:  View [dbo].[GroupingCP]    Script Date: 3/27/2019 10:29:39 AM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


ALTER VIEW [dbo].[GroupingCP] AS

SELECT [CODFILIALE]
      ,[I_CODPRO]
      ,[CODICE]
      ,[RagioneSociale]
      ,[Indirizzo]
      ,[Cap]
      ,[Localita]
      ,[Provincia]
      ,[CodNazione]
      ,[DesNazione]
      ,[Telefono]
      ,[Fax]
      ,[CodiceFiscale]
      ,[PIVA]
      ,Null as [ice]
      ,[CodPagamento]
      ,[ancodval]
      ,[flgsconto]
      ,[CodIvaLDI]
      ,[NumeroLDI]
      ,[AnnoLDI]
      ,[pivastampafattura]
      ,[banca]
      ,[Email]
      ,[afflintr]
      ,[TipoNazione]
      ,[CodFilialePassiva]
      ,[SDI]
      ,[LegalMail]
      ,[FlgAssigne]
      ,[AgentAssigne]
      ,NULL AS [CodNazioneFiliale]
      ,NULL AS [flgbloccofatturazione] 
      ,NULL AS  [DateModif]
      ,NULL AS  [devise]
      ,NULL AS  [exo]
      ,NULL AS  [nexo]
      ,NULL AS [dexo]
      ,NULL AS [dendexo]
       FROM tmp.CLIENTICONTABILI
       WHERE codice NOT IN ('00001247','00001254','00001259')
       UNION 
       SELECT [CODFILIALE]
      ,[I_CODPRO]
      ,[CODICE]
      ,[RagioneSociale]
      ,[Indirizzo]
      ,[Cap]
      ,[Localita]
      ,[Provincia]
      ,[CodNazione]
      ,[DesNazione]
      ,[Telefono]
      ,[Fax]
      ,[CodiceFiscale]
      ,[PIVA]
      ,[ice]
      ,[CodPagamento]
      ,[ancodval]
      ,[flgsconto]
      ,[CodIvaLDI]
      ,[NumeroLDI]
      ,[AnnoLDI]
      ,[pivastampafattura]
      ,[banca]
      ,[Email]
      ,[afflintr]
      ,[TipoNazione]
       [CodFilialePassiva]
      ,NULL AS SDI
      ,NULL AS legalmail
      ,[FlgAssigne]
      ,[AgentAssigne]
     ,[CodNazioneFiliale]
     ,[flgbloccofatturazione]
     ,[DateModif]
     ,[devise]

     ,[exo]
     ,[nexo]
     ,[dexo]
      ,[dendexo] FROM tmp.CLIENTICONTABILIEXT;
GO

Msg 205, Niveau 16, État 1, Procédure GroupingCP, Ligne 5 [Ligne de départ du lot 9] 使用 UNION、INTERSECT 或 EXCEPT 运算符中必须有相等数量的表达式 目标列表。

【问题讨论】:

错误信息说明了一切。为不匹配的列添加null 【参考方案1】:

您必须有相同数量的列可供选择 - 在您的第一个选择中有 38 个列,而在您的第二个选择中它是 39 个 - 这就是您出错的原因

select col1, col2, col3, col4, ...coln from tablename1
union all
select col1, col2, col3, col4, ...coln from tablename2

【讨论】:

我知道,数量相等,我仍然得到错误 在您的第一个选择中有 38 列,而在您的第二个选择中是 39 @yassinemhadhbi【参考方案2】:

我检查你的所有参数是否相等,两个表可能是在将空值应用到你的列时请设置数据类型,这取决于另一个这样的表。

例如:-

 CAST(NULL AS VARCHAR(100)) AS ICE

【讨论】:

以上是关于尝试合并来自两个不同表的两个选择时出现错误的主要内容,如果未能解决你的问题,请参考以下文章

合并两个 countvectorizer 时出现 isnan 错误

尝试合并两个不同数据框的两列时出现问题?

当我尝试在 sequel pro 中运行此查询时出现错误 [重复]

在 Kafka ksqlDB 上连接两个表时出现错误“无效的连接条件:表-表连接需要在右输入表的主键上连接”

尝试使用自定义图标创建 TabBarIOS 时出现不变违规错误

运行 DBMS_COMPARISON.CONVERGE 子程序时出现错误 ORA-00942