learning_new Ответов: 1

Соединение 4-х таблиц для получения одной главной таблицы


Я пытаюсь добавить новый код к уже существующему коду, который соединяет 3 таблицы, но у меня возникли проблемы с его запуском. Цель состоит в том, чтобы добавить таблицу в код, который создает таблицу. Вот исходный код:
У меня есть этот код, который является объединением 3 таблиц,
SELECT 
 [Provider] AS Publisher
,[Price_Rate]
,[Source_ID]
,Media.Date
,Media.Impressions
,Media.Clicks
,'0' AS [Opt-buyers]
,'0' AS [Completed buyers]
,Media.accounting
FROM [dbo].[budget]  AS BUDGET

LEFT JOIN 
(

  SELECT CASE WHEN [Ad_Set_Name] LIKE 'tw_%' 
  THEN'twitter' 
  WHEN [Ad_Set_Name] LIKE 'IN_%'
  THEN 'insta'
   ELSE '?'
      END AS Publisher
  ,CAST([Day] AS Date) AS Date
  ,SUM(CAST([Impressions] AS INT)) AS Impressions
  ,SUM(CAST([Link_Clicks] AS INT)) AS Clicks
  ,SUM(CAST([Amount_Spent__USD_] AS money)) AS Spend
  FROM [dbo].[twitter]
  Group by Day,[Ad_Set_Name]

   UNION ALL

    SELECT CASE WHEN [Site__PCM_] = 'acuits.com'
    THEN 'acqt'
     WHEN [Site__PCM_]= 'PulsePoint'
     THEN 'plpt'
    WHEN [Site__PCM_] = 'SRAX'
    THEN 'srax'
    ELSE [Site__PCM_]
    END AS Publisher
    ,CAST(Date AS Date) AS Date
    ,SUM(CAST(impressions AS INT)) AS Impressions
     ,SUM(CAST(clicks AS INT)) AS Clicks
    ,SUM(CAST(media_cost AS money)) AS Spend
   FROM [dbo] [pcm]
   Group by [Site__PCM_]
  ,Date

 ) AS new_sources_budget
 ON BUDGET.Source_ID = Media.Publisher
  WHERE source_id IS NOT NULL


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

SELECT 
  SUM(CAST(_Send2 AS INT)) AS [Email Sent]
 ,SUM(CAST(_Open2 AS INT)) AS [Email Open]
 ,SUM(CAST(Click2 AS INT)) AS [Email Click]
FROM [dbo].[behaviour]
Group by _Send2,_Open2,Click2


Этот код предоставляет следующую таблицу
Издатель Source_ID дата показ кликов optin тратить
accuea 1010 4/20/20 updown 10 да 300

любая помощь будет оценена по достоинству.

Что я уже пробовал:

Я пытался добавить этот код к текущему коду, но он не работает
 [Provider] AS Publisher
,[Price_Rate]
,[Source_ID]
,Media.Date
,Media.Impressions
,Media.Clicks
,'0' AS [Opt-buyers]
,'0' AS [Completed buyers]
,Media.accounting
FROM [dbo].[budget]  AS BUDGET

LEFT JOIN 
(
      SUM(CAST(_Send2 AS INT)) AS _Send2
      ,SUM(CAST([_Open2] AS INT)) AS _Open2
      ,SUM(CAST([Click2] AS money)) AS Click2
 FROM [dbo].[Email]
  Group by _Send2,_Open2,Click2

UNION ALL

  SELECT CASE WHEN [Ad_Set_Name] LIKE 'tw_%' 
  THEN'twitter' 
  WHEN [Ad_Set_Name] LIKE 'IN_%'
  THEN 'insta'
   ELSE '?'
      END AS Publisher
  ,CAST([Day] AS Date) AS Date
  ,SUM(CAST([Impressions] AS INT)) AS Impressions
  ,SUM(CAST([Link_Clicks] AS INT)) AS Clicks
  ,SUM(CAST([Amount_Spent__USD_] AS money)) AS Spend
  FROM [dbo].[twitter]
  Group by Day,[Ad_Set_Name]

   UNION ALL

    SELECT CASE WHEN [Site__PCM_] = 'acuits.com'
    THEN 'acqt'
     WHEN [Site__PCM_]= 'PulsePoint'
     THEN 'plpt'
    WHEN [Site__PCM_] = 'SRAX'
    THEN 'srax'
    ELSE [Site__PCM_]
    END AS Publisher
    ,CAST(Date AS Date) AS Date
    ,SUM(CAST(impressions AS INT)) AS Impressions
     ,SUM(CAST(clicks AS INT)) AS Clicks
    ,SUM(CAST(media_cost AS money)) AS Spend
   FROM [dbo] [pcm]
   Group by [Site__PCM_]
  ,Date

 ) AS new_sources_budget
 ON BUDGET.Source_ID = Media.Publisher
  WHERE source_id IS NOT NULL


и я пытаюсь присоединиться к другой таблице **под названием Электронная почта** выделена жирным шрифтом, но
Я, имея трудное время прохождения до сих пор. цель состоит в том, чтобы добавить этот код
При добавлении этого кода, выделенного жирным шрифтом, я получаю следующую ошибку
All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.

SELECT 
  SUM(CAST(_Send2 AS INT)) AS [Email Sent]
 ,SUM(CAST(_Open2 AS INT)) AS [Email Open]
 ,SUM(CAST(Click2 AS INT)) AS [Email Click]
FROM [dbo].[behaviour]
Group by _Send2,_Open2,Click2

CHill60

"не работает" - это не помогает. Что же происходит? Или не происходит. Если произошла ошибка, то скажите нам, что это за ошибка

1 Ответов

Рейтинг:
0

Richard Deeming

Ты пытаешься это сделать UNION набор из трех колонок - [_Send2], [_Open2], и [Click2] - с двумя наборами, содержащими пять столбцов - [Publisher], [Date], [Impressions], [Clicks], и [Spend].

Это не так. UNION работает. Как говорится в сообщении об ошибке, все наборы в UNION должно быть одинаковое количество столбцов.
СОЮЗ (Transact-SQL) - SQL Server | Microsoft Docs[^]

Также неясно, почему вы суммируете три столбца, когда вы также группируетесь по этим столбцам. Я не думаю, что это приведет к тому результату, которого вы ожидаете.
GROUP BY (Transact-SQL) - SQL Server | Microsoft Docs[^]

Вам нужно изучить структуру вашего тела. behaviour таблица, чтобы увидеть, как она соотносится с другими таблицами, прежде чем вы сможете решить, как объединить ее с существующим запросом.