2016-05-24 11 views
1

こんにちはイム使用してSQL Serverの私はマージクエリ

enter image description here

iは、データが次のように表示したい。この表示データこの

SELECT a.NamaMerk, b.NamaTipe from MsMerk as a inner join MsTipe as b 
on a.ID_Merk = b.ID_Merk where a.FlagActive='Y' and b.FlagActive='Y' and a.ID_Merk = b.ID_Merk and b.ID_Tipe = b.ID_Tipe 

のようなクエリがあるcategori でデータをマージしたいです

サムスン:ギャラクシーS7

  Galaxy S8 

のAsus:カテゴリ別にマージデータと同様にZenfone 4

  Zenfone 5 

は、私に助けて感謝の

+0

例として、2行目のサムスン値を空の文字列にしますか?なぜあなたはこれをしたいのですか?知ることは、より良い解決策を助けるかもしれません。 –

答えて

2

これを試してみてください。私はNamaMerkによってランク付けするROW_NUMBERを使用し、それは、1だNamaMerkとNamTipe他のスペースプラスNamaTipeを連結するとき、それは、私はROW_NUMBERを使用して、空の文字列

SELECT CASE 
     WHEN T.rank > 1 THEN '' 
     ELSE T.NamaMerk 
     END  AS 'NamaMerk', 
     T.NamaTipe AS 'NamaTipe' 
FROM (SELECT a.NamaMerk, 
       b.NamaTipe, 
       Row_number() 
       OVER( 
        partition BY a.NamaMerk 
        ORDER BY b.NamaTipe) AS 'RANK' 
     FROM msmerk AS a 
       INNER JOIN mstipe AS b 
         ON a.id_merk = b.id_merk 
     WHERE a.flagactive = 'Y' 
       AND b.flagactive = 'Y' 
       AND a.id_merk = b.id_merk) T 
+0

ありがとうbrad :) –

2
DECLARE @tab TABLE (NamaMerk VARCHAR(10), NamaTipe VARCHAR(10)) 
INSERT INTO @tab 
VALUES ('Samsung','Galaxy S7'),('Samsung','Galaxy S6'), 
('Apple','iPhone 5'),('LG','G5'),('Asus','Zenfone 4'), 
('Asus','Zenfone 7'),('Xiami', 'Mi Note 3'), 
('Asus','Zenfone 5') 

;WITH cte AS 
(
SELECT *,ROW_NUMBER() OVER(PARTITION BY NamaMerk ORDER BY NamaTipe) AS Rn 
FROM @tab 
) 
SELECT CASE WHEN Rn=1 THEN NamaMerk + ':' + NamaTipe 
    ELSE REPLICATE(' ',LEN(NamaTipe)) + NamaTipe END AS Result 
FROM cte; 

に設定1より大きいだとき。

SSRSでこれを行う必要があるかもしれないと思うのですが、これはディスプレイと関係があります。

+0

空白スペースの塗りつぶしは、モノスペースフォントを使用すると正しく動作します。それにもかかわらず、良い解決策。 –