【发布时间】:2017-05-31 08:53:43
【问题描述】:
SQL Pivot 命令至少看起来很难。我已经阅读了很多关于它的内容,并且一直在修改这个查询一段时间,但我得到的只是无济于事的晦涩错误消息,例如“列名'Id'被多次指定......”或"无法绑定多部分标识符 X。"
我们的数据库收集客户对问题的回答。我想创建一个表,其中包含每个客户的一行,他们回答的每个问题 (ID) 的列以及该用户所有登录时间的 AVG ResponseTime。这变得更加困难,因为 UserId 是'不是直接存储在UserSessionData表中,而是存储在UserSession表中,所以我必须先做一个join,这似乎使问题复杂化了。
我要转置的表格大致如下:
CREATE TABLE [dbo].[UserSessionData](
[Id] [int] IDENTITY(1,1) NOT NULL,
[UserSessionId] [int] NOT NULL,
[UserWasCorrect] [bit] NULL,
[ResponseTime] [float] NULL,
[QuestionId] [int] NULL)
--This table contains user answers to a number of questions.
CREATE TABLE [dbo].[UserSession](
[Id] [int] IDENTITY(1,1) NOT NULL,
[UserId] [int] NOT NULL,
[SessionCode] [nvarchar](50) NOT NULL)
--This table contains details of the user's login session.
CREATE TABLE [dbo].[Question](
[Id] [int] IDENTITY(1,1) NOT NULL,
[QuestionText] [nvarchar](max) NOT NULL,
[GameId] [int] NOT NULL,
[Description] [nvarchar](max) NULL)
--This table contains question details
我将继续尝试破坏解决方案,但如果有人能阐明任何观点(或提出比 PIVOT 更简单的方法来达到预期结果),那就太好了。
干杯
【问题讨论】:
-
你期待什么结果?
-
在编写查询以透视数据时,请按全名引用列。例如,[问题].[Id]、[UserSessionData].[ID] 等
标签: sql-server pivot