2015-10-19 77 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