所以我们创建了一个视图来重新组合来自两个表的信息(表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运算符组合的所有查询必须在其目标列表中具有相同数量的表达式。
你必须有相同数量的列才能进行选择 - 在你的第一个选择中有38列,你的第二个选择是39 - 这就是你得到错误的原因
select col1, col2, col3, col4, ...coln from tablename1
union all
select col1, col2, col3, col4, ...coln from tablename2
我检查你的所有参数相等两个表可能请在你的列中应用空值时设置数据类型,具体取决于另一个这样的表。
例如: -
CAST(NULL AS VARCHAR(100)) AS ICE