尝试从两个不同的表中合并两个选项时出错

问题描述 投票:-2回答:2

所以我们创建了一个视图来重新组合来自两个表的信息(表A中存在的信息但是表b中没有,反之亦然

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,État1,ProcédureGroupingCP,Ligne 5 [Lignededépartdulot 9]使用UNION,INTERSECT或EXCEPT运算符组合的所有查询必须在其目标列表中具有相同数量的表达式。

sql-server tsql view union
2个回答
0
投票

你必须有相同数量的列才能进行选择 - 在你的第一个选择中有38列,你的第二个选择是39 - 这就是你得到错误的原因

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

0
投票

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

例如: -

 CAST(NULL AS VARCHAR(100)) AS ICE
© www.soinside.com 2019 - 2024. All rights reserved.