0
是否有更好的方法来实现下表中的PIVOT - 基本上我试图计算typeid的永远userid,以及获得每种类型的第一个值,并将类型和值(使用SQL Server 2012):PIVOT两列
这是预期的结果:
这里就是我想出了:
SELECT userid ,
MAX([1]) [1] ,
MAX([2]) [2] ,
MAX(value1) [value1] ,
MAX(value2) [value2]
FROM (SELECT userid ,
typeid ,
FIRST_VALUE(value) OVER (PARTITION BY userid, typeid ORDER BY testid) [value] ,
'value' + CONVERT(VARCHAR(20), typeid) [valuepivot]
FROM dbo.test
) t PIVOT(COUNT(typeid) FOR typeid IN ([1], [2])) as pivottype
PIVOT(MAX(value) FOR [valuepivot] IN ([value1], [value2])) as pivottype2
GROUP BY userid
表模式:
CREATE TABLE [dbo].[Test](
PIVOT(MAX(value) FOR [valuepivot] IN ([value1], [value2])) as pivottype2
[TestID] [int] PRIMARY KEY IDENTITY(1,1) ,
[UserID] [int] NOT NULL,
[TypeID] [int] NOT NULL,
[Value] [varchar](100) NOT NULL
)
GROUP BY userid
看来您的代码目前正常工作,而您正在寻求改进它。通常,这些问题都太自以为是了这个网站,但你可能会发现更好的运气在[CodeReview.SE(http://codereview.stackexchange.com/tour)。请记住阅读[他们的要求](http://codereview.stackexchange.com/help/on-topic),因为它们比这个网站更严格。 –