2015-10-19 2 views
-1

Я пытаюсь скрыть дубликаты данных из нескольких строк, вот мой текущий код, и я предоставил изображение вывода, мне нужны дубликаты в столбцах LOGINID, EMAIL и USERGROUP, чтобы показывать только один раз. Кроме того, как мне получить данные из столбца «ROLE» в столбце «USERGROUP»? Так выглядит последнее изображение? Я использую SQL Server Management Studio. Любая помощь могла бы быть полезна.Как скрыть повторяющиеся данные?

SELECT LTRIM(RTRIM(HOST0149.LOGINID)) AS LOGINID, 
       CASE WHEN HOST0140.EMAIL = HOST0149.LOGINID THEN NULL 
        ELSE LTRIM(RTRIM(HOST0140.EMAIL)) END AS EMAIL, 
       LTRIM(RTRIM(HOST0149.USERKEY)) AS USERGROUP, 
       LTRIM(RTRIM(HOST0150.ROLE)) AS ROLE 
FROM HOST0149 
    LEFT JOIN HOST0140 ON HOST0149.PERSONKEY = HOST0140.PERSONKEY 
    LEFT JOIN HOST0151 ON HOST0140.PERSONKEY = HOST0151.PERSONKEY 
    LEFT JOIN HOST0150 ON HOST0151.ROLEKEY = HOST0150.ROLEKEY 
ORDER By LOGINID 

enter image description here

enter image description here

+1

Ваш образец входного изображения и изображения вывода несоответствия, пожалуйста, разместите фактические данные без изображений ИЛИ создайте скрипт SQL – wiretext

ответ

0

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

Если предположить, что это правильно, вы можете использовать функции XML, чтобы сделать это (см: Concatenate many rows into a single text string?)

Select distinct LOGINID, 
       EMAIL 
     (
      Select HOST0150.ROLE + char(13)+char(10) + AS [text()] 
      From HOST0150 
      Where HOST0151.ROLEKEY = HOST0150.ROLEKEY 
      ORDER BY HOST0150.ROLEKEY 
      For XML PATH ('') 
     ) [roles] 
    FROM HOST0149 
LEFT JOIN HOST0140 ON HOST0149.PERSONKEY = HOST0140.PERSONKEY 
LEFT JOIN HOST0151 ON HOST0140.PERSONKEY = HOST0151.PERSONKEY 
LEFT JOIN HOST0150 ON HOST0151.ROLEKEY = HOST0150.ROLEKEY 
ORDER By LOGINID 
0

Экспорт файла в Excel с помощью функции экспорта, то просто заменить данные или добавить проверку, где данные повторяются удалите эту строку .. извините за мой английский

+0

, вы его получите? –

+0

нет извините, я не получил его – user1234

Смежные вопросы