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 . . . 谢谢。我在代码中使用了一些左连接和外部应用。因此,如果使用此逻辑,则无法将其他表连接到主表。它说-多部分标识符无法绑定。