我有一个表,它是为返回的数据 -
Column1 Column2 Column3 Column4 Column5 Column6
-------------------------------------------------------------------
6 Joy Mycity NZ 123456 myemail@gamil.com
我需要DISPLY它 -
SingleColumn
-----------------------
6
joy
mycity
NZ
123456
myemail@gmail.com
我该怎么做?
我会做查询继续返回数据,你现在是,作为单个列,而是做它,因为它需要它的UI代码格式。 使得它更灵活,你可以有X相同数据的不同显示,全部使用一个,相同的查询作为数据源。
也许我失去了一些东西,但不能你做一个
SELECT COL1 + '' + COL2 + ...将它们串联在一起。
如果“需要显示”在这样的表单中的数据,我会先检索数据 - 从一个表中的多个列的大概单行 - 从数据库中,然后使用用于检索数据的工具/语言(C#,Java中,无论)将数据格式化,因为它需要由或任何对显示它被显示。 SQL是设计来存储和检索数据,而不是对其进行格式化以显示在屏幕上。
随着中说,如果我不得不从一个表中的一行返回(说)从5个独立的列中的值,我想破解它是这样的:
SELECT Col1 as Data, 1 as MyOrder from MyTable where MyTableId = @DesiredRow
UNION ALL SELECT Col2, 2 from MyTable where MyTableId = @DesiredRow
UNION ALL SELECT Col3, 3from MyTable where MyTableId = @DesiredRow
UNION ALL SELECT Col4, 4 from MyTable where MyTableId = @DesiredRow
UNION ALL SELECT Col5, 5 from MyTable where MyTableId = @DesiredRow
order by MyOrder
(有,看看是否能得到正确的格式......),你只需要别名第一选择列。 嗯,还会有其他方面的考虑,如(1)返回的将是该数据类型先选择,所以你可能需要做大量的铸件,如列的数据类型
...select cast(Col1 as varchar(100)) As Data...
(2)可能会订购选择时的顺序返回行,我在排序依据扔只是要确定。 而且,(3)你的情况可能取决于应用的考虑,我不知道刚才发生变化。
祝好运!
SQL Server 2005中自带的PIVOT / UNPIVOT功能它做的正是这一点。
SELECT SingleColumn FROM
(SELECT CAST(Column1 AS VARCHAR(128)) AS c1,
CAST(Column2 AS VARCHAR(128)) AS c2,
CAST(Column3 AS VARCHAR(128)) AS c3,
CAST(Column4 AS VARCHAR(128)) AS c4,
CAST(Column5 AS VARCHAR(128)) AS c5,
CAST(Column6 AS VARCHAR(128)) AS c6
FROM (...) AS t
) AS p
UNPIVOT (SingleColumn FOR cols IN (c1, c2, c3, c4, c5, c6)) AS unp