【发布时间】:2016-03-17 16:11:47
【问题描述】:
一个快速的背景,让我的问题有意义:系统以问卷的形式从用户那里收集数据。用户属于组织,组织属于部门,问题/计算(如调查问卷中所示)因部门而异。 (问题由用户回答;计算由系统计算)。
存在以下表格:
部门(部门 ID、名称)
组织(组织 ID、名称、部门 ID)
年份(年份 ID、名称)
问题(QuestionID、DisplayText、CommonName、SectorID)
答案(AnswerID、Answer、OrganisationID、YearID、QuestionID)
计算(CalculationID、DisplayText、CommonName、SectorID)
CalculationResults(CalculationResultID、Result、OrganisationID、YearID、CalculationID)
我需要通过以下方式显示数据:
让这个问题(对我来说)特别复杂的是,问题以不同的方式(向用户)显示在它们所属的不同部门中,但其中一些仍然是常见问题。例如。 “制造销售”与“销售(制造)”相同。我需要使用CommonName 字段来确定共性。
我已经设法使用 SQL Pivot 来接近我想要的 - SQL Fiddle(如果您运行 SQL,您会注意到空值和“共性”问题)。但是我的尝试中缺少一些东西:
通用性和列名 - 我需要列名是
CommonName字段,而不是QuestionID字段。-
我只从 Answers 表中进行了选择 - 我还需要从结构相同的 CalculationResults 表中进行选择。
李>
编辑:SQL Fiddle 数据的期望结果是:
(带有橙色角的两个块需要一直向左移动,以便问题共有 3 列 - 3 个唯一的 CommonName 值。接下来的 3 列是 3 个唯一的 @987654330 @ 计算值。我希望我说得通,如果不告诉我。)
Edit2:另一个编辑只是为了好玩。我确实考虑过重新设计数据库,但在这个阶段这不是一个选择——在这个遗留系统上风险太大。以防有人看到设计并认为。希望我需要 Pivot 形式的解决方案。
【问题讨论】:
-
您能否为您在 sqlfiddle 中提供的演示提供具有所需结果(列名和值)的图片?
-
@lad2025,编辑了原帖
标签: sql tsql sql-server-2012 pivot