これは、質問のような一時テーブルを生成し、CTE(共通テーブル式)とcase
ステートメントを使用してデータを出力するSQLの例です。MS SQL Server 2008 R2 でテスト済み。
CREATE TABLE #test (
id INT,
Name varchar,
items varchar
);
INSERT INTO #test VALUES
(101, 'A', 'x'),
(102, 'B', 'Y'),
(101, 'A', 'Z'),
(102, 'B', 'S'),
(102, 'B', 'J'),
(101, 'A', 'Q');
WITH tmp AS (
SELECT CAST(id AS varchar) AS id
, name
, items
, row_number() OVER (PARTITION BY id ORDER BY id) AS rn
FROM #test
)
SELECT
(CASE WHEN rn = 1 THEN id ELSE '' END) AS id
,(CASE WHEN rn = 1 THEN name ELSE '' END) AS name
,items
FROM tmp;
DROP TABLE #test;