SQL Слияние дубликатов записей в одну строку

Поздно к разговору ...

Если вы установили модуль и правильно установили свой файл PHP.INI, проверьте свой журнал ошибок apache примерно на следующее:

PHP Предупреждение: запуск PHP: невозможно загрузить динамическую библиотеку «C: \ php \ ext \ php_mysqli.dll» - указанный модуль не найден.

В этом случае ваш каталог расширений не является тем, что вы думаю. Вы можете настроить его явно, например:

extension_dir="C:\xampp\php\ext"
7
задан marc_s 13 July 2018 в 13:40
поделиться

1 ответ

Условная агрегация может справиться с этим довольно легко. Увлекательная часть - это электронные письма, но не невозможные вообще. Однако в вашем образце вывода есть только 17 столбцов (emcoid 1 - 4). Достаточно легко, если вам нужно настроить его, чтобы разместить пятый.

select x.emplid
    , x.name
    , conttp = max(case when x.RowNum = 1 then x.conttp end)
    , conttp2 = max(case when x.RowNum = 2 then x.conttp end)
    , conttp3 = max(case when x.RowNum = 3 then x.conttp end)
    , conttp4 = max(case when x.RowNum = 4 then x.conttp end)
    , conttp5 = max(case when x.RowNum = 5 then x.conttp end)
    , conttp6 = max(case when x.RowNum = 6 then x.conttp end)
    , phone = max(case when x.RowNum = 1 then x.phone end)
    , phone2 = max(case when x.RowNum = 2 then x.phone end)
    , x.fax
    , email = max(case when x.RowNum = 1 then emails.email end)
    , email2 = max(case when x.RowNum = 2 then emails.email end)
    , emcoid1 = max(case when x.RowNum = 1 then x.emcoid end)
    , emcoid2 = max(case when x.RowNum = 2 then x.emcoid end)
    , emcoid3 = max(case when x.RowNum = 3 then x.emcoid end)
    , emcoid4 = max(case when x.RowNum = 4 then x.emcoid end)
from 
(
    select *
        , RowNum = ROW_NUMBER() over(partition by emplid order by emcoid)
    from Contacts c
) x
join
(
    select *
        , RowNum = ROW_NUMBER() over(partition by emplid order by (select null))
    from
    (
        select distinct email
            , emplid
        from Contacts
    ) a
) emails on emails.RowNum = x.RowNum
            and emails.emplid = x.emplid
group by x.emplid
    , x.name
    , x.fax
3
ответ дан Sean Lange 17 August 2018 в 12:44
поделиться
  • 1
    Это оно! Вау. Спасибо огромное! Это спасло меня так много времени! – Lloyd 13 July 2018 в 14:28
  • 2
    Рад, что сработало для вас. Наслаждаться!! – Sean Lange 13 July 2018 в 14:30
Другие вопросы по тегам:

Похожие вопросы: