假设我有:
DECLARE @t TABLE (
x INT,
y NVARCHAR(30)
)
INSERT INTO @t (x, y) VALUES (1, 'a'), (2, 'b'), (3, 'c')
查询该表,我想得到这个结果集:
c1 c2 c3 ---- ---- ---- a b c
我事先知道x
的价值;也就是说,我知道我希望y
行中的x = 1
作为我的c1
,我希望y
行x = 2
为c2
{ {1}}等,所以我可以对这些关系进行硬编码。
如何在不使用游标或循环的情况下获得该单行?
答案 0 :(得分:1)
你可以考虑使用PIVOT声明,但我不确定你是否会得到你所追求的。但是,这也可行:
SELECT
MAX(CASE x WHEN 1 THEN y END) AS c1,
MAX(CASE x WHEN 2 THEN y END) AS c2,
MAX(CASE x WHEN 3 THEN y END) AS c3
FROM @t