この回答は、さらなる要件によっては時代遅れになる可能性がありますが、これまでのコメントを考えると、垂直ではなく水平にレビューするためだけに SQL Server のデータを変更しないことをお勧めします。Excel などのアプリケーションは、これにはるかに適しています。Management Studio からのクエリ結果をコピーして貼り付ける (グリッドへの結果)、ソース フラット ファイルからコピーして貼り付ける、またはデータを列として Excel に取得することができます。200行を強調表示し、 を押しCopy
てから、どこかを右クリックして、Paste Special...
ここにダイアログが表示されることを選択し、Transpose
チェックボックスをオンにして をクリックしますOK
。ほら、あなたの行は列です!
サイズはごめんなさい。私の網膜はすべてのスクリーン ショットのサイズを 2 倍にします。別のコンピュータを使用する以外に便利な回避策はまだ見つかりません。:-(
さて、本当に SQL Server でこれを行いたい場合は、このような醜いことを行うことができると思います。次のソース テーブルが与えられた場合 (SQL Server 2008 以降を想定):
CREATE TABLE dbo.InColumns(col VARCHAR(255));
GO
INSERT dbo.InColumns(col) VALUES
('B 01 1007282 Y 1001201 15102'),
('B 02 LEVEL Y 2705201 15102'),
('B 03 1998014 Y 2808201 15102'),
('B 05 Y 2808201 15102'),
('B 06 49081100 Y 1708201 15102'),
('B 07 64072151 Y 2903201 15102'),
('B 08 75090350 Y 0111200 15102'),
('B 09 58082950 Y 0608200 15102'),
('B 10 75112551 Y 1007200 15102'),
('B 11 72030950 Y 1007200 15102'),
('B 20 74507632 Y 2808201 15102'),
('B 23 98240166 Y 2808201 15102'),
('B 25 U4507632 Y 2808201 15102'),
('B 26 45002267 Y 2808201 15102');
さて、とても楽しい動的 SQL です。
DECLARE @sql NVARCHAR(MAX) = N'', @maxlen INT;
SELECT @maxlen = MAX(LEN(col)) FROM dbo.InColumns;
SELECT @sql += N',
Col' + RTRIM(rn) + ' VARCHAR(' + RTRIM(@maxlen) + ')'
FROM (SELECT rn = ROW_NUMBER() OVER
(ORDER BY col) FROM dbo.InColumns) AS x;
SET @sql = N'CREATE TABLE dbo.InRows
(' + STUFF(@sql, 1, 1, N'') + ');';
EXEC sp_executesql @sql;
SET @sql = N'';
SELECT @sql += N',
(SELECT col FROM x WHERE rn = ' + RTRIM(rn) + ')'
FROM (SELECT rn = ROW_NUMBER()
OVER (ORDER BY col) FROM dbo.InColumns) AS x;
SET @sql = N';WITH x AS (SELECT col, rn = ROW_NUMBER() OVER
(ORDER BY col) FROM dbo.InColumns)
INSERT dbo.InRows SELECT TOP (1) '
+ STUFF(@sql, 1, 1, N'') + ' FROM x;';
EXEC sp_executesql @sql;
GO
SELECT * FROM dbo.InRows;
GO
DROP TABLE dbo.InRows;
結果:
Col1 Col2 ...
--------------------------------- -------------------------
B 01 1007282 Y 1001201 15102 B 02 LEVEL Y 27...
これが Excel ではるかに簡単である理由がわかりますか?
200 行では、危険なほどテーブルの最大行サイズを超えようとしています。この 200varchar(max)
列を作成することでそれを「修正」することはできますが、そのことを考えると実際に身震いがしました。