Sql 将列值分隔为行值

Sql 将列值分隔为行值,sql,sql-server,Sql,Sql Server,我有一张表,如下所示: Name First Value Second Value --------------------------------------------- BestBuy 700 -250 我使用的代码是: SELECT Name, First Value, Second Value FROM TABLE_A 我想要的是: Name First Value ---------------

我有一张表,如下所示:

Name          First Value      Second Value
---------------------------------------------
BestBuy       700               -250
我使用的代码是:

SELECT Name, First Value, Second Value
FROM TABLE_A
我想要的是:

Name          First Value
----------------------------
BestBuy        700 
BestBuy       -250

挂起的值现在将是第一个值下的附加值,即,我必须添加一行,而不是获得额外的列值。关于如何实现这一点,您有什么想法吗?

您可以使用
apply

select a.name, v.market_value
from table_a a
cross apply  (values (market_value), (pending_value)) v(market_value);

您可以使用
UNION ALL
,如中所示:

SELECT Name, [Market Value] FROM TABLE_A
UNION ALL 
SELECT Name, [Pending Value] FROM TABLE_A

您还可以使用
unpivot
,如下所示:

SELECT [Name], val AS [Market Value]
FROM @t t
UNPIVOT
(
  val for col in ([Market Value], [Pending Value])
) UPVT

谢谢你,戈登。我正试图将上述逻辑应用到我的代码中,但它抛出了一个错误-应为ID或QUOTED_ID。@HSManohar Gordon缺少实际的应用程序。看见edit@JohnCappelletti . . . 谢谢。我在代码中使用了一些左连接和外部应用。因此,如果使用此逻辑,则无法将其他表连接到主表。它说-多部分标识符无法绑定。