Как я могу объединить эти две строки в таблице SQL? - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть следующие данные в одной таблице:

enter image description here

Мне нужен запрос SQL, который может объединить данные для добавления url1 к пакетный ряд и url2 в один ряд. Могу ли я использовать столбец KNO для создания какой-либо совпадающей информации?

Результат:

enter image description here

Ответы [ 3 ]

0 голосов
/ 22 апреля 2020

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

select 
    kno,
    max(case when kname = 'ProcessName' then kvalue end) kvalue,
    max(case when kname = 'ApplyPage' then kvalue end) url
from mytable
group by kno

Это не выводит 'ProcessName 'в первом столбце, потому что в любом случае это будет фиксированное значение .

0 голосов
/ 22 апреля 2020

Я нашел другое решение, используя INNER JOIN. Я изменил столбец kno строк "applyPages", чтобы он содержал соответствующее имя процесса, затем я присоединил их к этому столбцу:

SELECT kname, kno, kvalue, url 
    FROM (SELECT kname, kvalue FROM mytable WHERE kname='ProcessName%') A 
    INNER JOIN (SELECT kname,url, kno FROM mytable WHERE kname='ApplyPage') B 
    ON A.kname = B.kno
0 голосов
/ 22 апреля 2020

Агрегация делает то, что вы хотите?

select kname, kno, min(kvalue), max(kvalue)
from t
group by kname, kno;
...