2013-04-26 60 views
1

在我的旧存储过程结果以计数形式返回。它返回如下。结果是正确的,但现在我想要这个行结果的表格形式。 请仔细检查并帮助我。将一条记录转换成两列的形式

结果中排的形式:在列的形式

SELECT 100 AS A ,200 AS B ,300 AS C 

要求的结果:

TextKey | TextValue 
--------------------- 
    A   100 
    B   200 
    C   300 

在此先感谢。

回答

3

最简单的办法是使用一个UNION ALL

SELECT 'A' AS TextKey, 100 AS TextValue UNION ALL 
SELECT 'B', 200 UNION ALL 
SELECT 'C', 300 
+0

@muhmud + 1和Lieven Keersmaekers +1不同答案。但UNION ALL清晰,快速且易于使用... – andy 2013-04-26 09:54:39

+0

谢谢,真的这是简单的答案。 – Anvesh 2013-04-26 10:06:26

2
select TextKey, TextValue 
from (
    SELECT 100 AS A ,200 AS B ,300 AS C 
) t unpivot (TextValue for TextKey in ([A], [B], [C])) tp 
+0

为muhmud +1和为@Lieven Keersmaekers +1为不同的答案。但联盟所有是明确的,快速和易于使用... – andy 2013-04-26 09:55:18

+0

谢谢这也是工作正常。 – Anvesh 2013-04-26 10:07:15

1

查询: SQLFIDDLEExample

SELECT a.* 
FROM (VALUES ('A', 100), 
      ('B', 200), 
      ('C', 300)) as a(TextKey, TextValue) 

结果:

| TEXTKEY | TEXTVALUE | 
----------------------- 
|  A |  100 | 
|  B |  200 | 
|  C |  300 | 
+0

+1如果OP使用SQL Server 2008或更高版本,这将是最容易调整的附加元素。 – 2013-04-27 07:26:18