2017-03-28 6 views
1

SQLクエリを作成しています。私のテーブルには、次のように: -名前に基づいてデータを表示するためのSQLクエリ

DECLARE @Tab TABLE 
(
    Name VARCHAR(10), 
    NUM INT, 
    PracticeName VARCHAR(10) 
) 

INSERT INTO @Tab 
VALUES ('A', 25, 'Test'), ('B', 30, 'Test'), ('C', 236, 'Test1'), 
     ('D', 217, 'Test'), ('E', 19, 'Test1') 

私が使用しているクエリは次のとおりです。

SELECT 
    PracticeName, 
    'Total:' + CAST(SUM(NUM) as varchar(10)) + ' ('+ 
       STUFF((SELECT ', ' + Name + ':' + CAST(NUM as varchar(10)) 
         FROM @Tab 
         FOR XML PATH('')), 1, 1, '') +')' 
FROM @Tab 
GROUP BY PracticeName 

私は取得しています出力は次のようになります。

Test Total:272 (A:25, B:30, C:236, D:217, E:19) 
Test1 Total:255 (A:25, B:30, C:236, D:217, E:19) 

私は、出力したい: -

Test  Total:272 (A:25, B:30, D:217) 
Test1  Total:255 (C:236, E:19) 

助けてください

答えて

1

はちょうどあなたのstuff()

SELECT PracticeName,'Total:' + CAST(SUM(NUM) as varchar(10)) +' ('+ 
STUFF( 
    ( 
    SELECT ', ' + s.Name +':'+ CAST(s.NUM as varchar(10)) 
    FROM @Tab s 
    WHERE s.PracticeName = m.PracticeName 
    FOR XML PATH('') 
), 1, 1, '') +')' 
FROM @Tab m 
GROUP BY PracticeName 
+0

'説明ソリューションにwhere句を追加し、コードは十分ではありません。何が間違っているのか、理由を教えてください。 –

関連する問題