对选择列表中的单个元素进行分组时出错

时间:2013-12-05 01:23:37

标签: sql-server-2008 reporting-services sql-server-2012

我有一个查询需求(问题确实)我希望通过一个带有来自另一个表的where子句的表对结果进行分组。场景如下:

表1(每个描述单行,没有欺骗)

  • int id
  • varchar(10)description(每个描述单行,没有欺骗)

表2每个Table1.ID的多行

  • int id
  • fk_ref_tbl_1_ID(表1中的ID)
  • varchar(30)SomeText

表3(每个Table2.ID有多行)

  • int id
  • fk_ref_tbl_2_ID(表2中的id)
  • varchar(30)ChoicesForTable2

我想要的输出是这样的:

Table2.SomeText

  • Table3.ChoicesForTable2
  • Table3.ChoicesForTable2
  • Table3.ChoicesForTable2
到目前为止,我的查询看起来像这样:

select Table2.Some, Table3.ChoicesForTable2 from Table1 t1
inner join Table2 t2 on T1.id = T2.fk_ref_tbl_1_ID 
inner join Table3 t3 on T3.fk_ref_tbl_2_ID = T2.ID
where T1.id = 45
group by T2.id

我收到一个错误:

  

Msg 8120,Level 16,State 1,Line 1   列'T2.SomeText'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。

没有小组我得到这样的东西:

T2.SomeText,T3.ChoicesForTable2(每个T3.ChoicesForTable2都有不同的值) T2.SomeText,T3.ChoicesForTable2(每个T3.ChoicesForTable2有不同的值) T2.SomeText,T3.ChoicesForTable2(每个T3.ChoicesForTable2有不同的值) T2.SomeText,T3.ChoicesForTable2(每个T3.ChoicesForTable2有不同的值) T2.SomeText,T3.ChoicesForTable2(每个T3.ChoicesForTable2都有不同的值)

将Table1视为测试,每个测试都有很多问题(表2),每个问题都有几个可能的答案(表3)。理想情况下,我可以生成一个输出,显示特定问题,并在其下方显示可能的选项。所以我的分组将通过问题(表2)

我真的试图在没有游标的情况下在T-SQL中完成所有操作,我可以用C#强制它,然后使用SSRS生成测试,我认为更有效的方法是提出正确的查询来绑定对ssrs的定义。因为我这里真正的绊脚石是具有多个领域和分组的选择,解决这个问题肯定会缓解未来的痛苦。

0 个答案:

没有答案