我有一个查询需求(问题确实)我希望通过一个带有来自另一个表的where子句的表对结果进行分组。场景如下:
表1(每个描述单行,没有欺骗)
表2每个Table1.ID的多行
表3(每个Table2.ID有多行)
我想要的输出是这样的:
Table2.SomeText
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的定义。因为我这里真正的绊脚石是具有多个领域和分组的选择,解决这个问题肯定会缓解未来的痛苦。