после объединения двух таблиц результат не совпадает с исходной таблицей - PullRequest
2 голосов
/ 07 октября 2010

У меня проблема с внутренним объединением двух таблиц: LOOKUP и PERF.

LOOKUP

... имеет только креативное имя и "perf".Таблица имеет имя объявления и значения для него.Мне нужно получить значения в LOOKUP (где обе таблицы имеют общее имя объявления).К вашему сведению: UCID - это не что иное, как имя объявления

Кроме того, имена объявлений содержат дубликаты в обеих таблицах, поэтому мне нужно их суммировать и получить различное значение.Ниже приведен код, который я использовал, но функция sum (), похоже, не работает, поскольку я вижу другое значение по сравнению с исходными данными таблицы.

Вот код, который я использовал

select UCID/*, [creative name]*/,
       sum(perf.[delivered impressions]) as ttl_del,        
       sum(perf.[IMM_SUMMARY])as ttl_WSO,
       sum(perf.[clicks]) as ttl_clicks,
       sum(perf.[IMM_SUMMARY])/sum(perf.[delivered impressions])*100 as IMM_Score    
  from ADHOC_NG_UCID_lookup lookup    
  JOIN FILTERED_CREATIVE_EXEC_TABLE perf ON lookup.[UCID] = perf.[creative name]    
 where perf.[delivered impressions] > 0 
   and perf.[brand] in ('MALIBU') 
   and perf.month in ('APRIL') 
   and perf.[sizes] in('160x600')    
group by UCID/*, lookup.[creative name]*/    
order by UCID/*, [creative name]*/

Вот код, в котором я используется для перекрестной проверки значений (это исходная таблица)

select [creative name],
        sum([Delivered Impressions]) asttl_del,
        sum([IMM_SUMMARY])asttl_WSO,
        sum([clicks])as ttl_clicks,
        sum([IMM_SUMMARY])/sum([Delivered Impressions])*100 as IMM_Score
from FILTERED_CREATIVE_EXEC_TABLE
where [delivered impressions] > 0 
  and [brand] in('MALIBU')
  and month in('APRIL')
  and [sizes] in('160x600')
group by[creative name]
order by[creative name]

Пожалуйста, дайте совет или дайте мне знать, почему не работает функция sum ()должным образом.

Очень ценю вашу поддержку.

Ответы [ 2 ]

1 голос
/ 07 октября 2010

Есть ли в FILTERED_CREATIVE_EXEC_TABLE строки, которых нет в ADHOC_NG_UCID_lookup?Если это так, INNER JOIN исключит эти строки из вашего первого запроса.Чтобы проверить это условие:

select perf.[creative name]
    from FILTERED_CREATIVE_EXEC_TABLE perf
        LEFT JOIN ADHOC_NG_UCID_lookup lookup
            ON perf.[creative name] = lookup.[UCID]
    where perf.[delivered impressions]>0 
        and perf.[brand] in ('MALIBU') 
        and perf.month in ('APRIL') 
        and perf.[sizes] in('160x600')
        and lookup.[UCID] is null
0 голосов
/ 07 октября 2010

у вас, вероятно, есть дубликаты в ваших данных.

запустите их.если любой из них возвращает данные, это означает, что эти записи являются дубликатами

select
    UCID, COUNT(*)
from ADHOC_NG_UCID_lookup lookup
group by UCID
having COUNT(*)>1


select
    [creative name], COUNT(*)
from FILTERED_CREATIVE_EXEC_TABLE perf
group by [creative name]
having COUNT(*)>1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...