这个答案可能取决于进一步的要求变得过时,但迄今为止给出的意见,我建议不要在SQL Server中更改数据,而只是纵向而不是纵向查看它。 Excel等应用程序更适合于此。您可以从Management Studio复制和粘贴查询结果(结果到网格),从源平面文件中复制和粘贴,或以其他方式将数据作为列获取到Excel中。突出显示200行,点击Copy
,然后右键单击某处并选择Paste Special...
,您将在此处看到对话框,只需选中Transpose
复选框并点击OK
即可。瞧,你的行是列!
很抱歉的大小。我的视网膜是所有屏幕截图的两倍,I haven't found a convenient workaround yet, other than using a different computer。 :-(
现在,如果你真的想这样做在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行,您将会危险地接近超过表格的最大行大小。你可以通过制作这些200列的“修复”,但这种想法实际上让我感到不寒而栗。
你可以显示当前表结构的位置,你将它导入?它真的只是一列吗?有没有已知的行数?如果有5000行,你希望将它转换成5000列的表格吗?为什么? – 2013-03-09 16:53:12
有200行,如果可能的话,我需要放入列中,请让我知道 – user2151321 2013-03-09 16:58:51
200列是相当多的。那么你将如何处理数据呢?了解目的将帮助我们给你更好的答案。是的,我们可以告诉你如何做你正在做的事情,但这听起来不是一个好主意,想象你将如何使用它是非常困难的。 – 2013-03-09 16:59:54