Я получил ошибку при попытке объединить два выбора из двух разных таблиц - PullRequest
0 голосов
/ 27 марта 2019

ребята, я создал вид, чтобы перегруппировать информацию из двух таблиц (есть информация, которая существует в таблице 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, État 1, Procédure GroupingCP, Ligne 5 [Ligne de départ du lot 9] Все запросы объединяются с использованием UNION, INTERSECT или EXCEPT оператор должен иметь равное количество выражений в своих списки целей.

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Я проверяю, что все ваши параметры равны, обе таблицы могут быть установлены, пожалуйста, установите тип данных при применении нулевых значений в вашем столбце в зависимости от другой таблицы, подобной этой.

Пример: -

 CAST(NULL AS VARCHAR(100)) AS ICE
0 голосов
/ 27 марта 2019

у вас должно быть равное количество столбцов для выбора - в вашем первом выборе есть 38 столбцов, где, как и во втором выборе, это 39 - и по этой причине вы получили ошибку

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