我想通过调查ID来计算不同的请求,并按SubjectValue
对其进行分组我在一个带有子查询的表上完成了这个,但是我不太确定要用几个。谁能帮助我?
这是3个表的连接方式。值得注意的唯一值是
subjectValue - Table A Request_Id - Table A Survey_Id - Table C
SELECT TableA.SubjectValue FROM TableB INNER JOIN TableA ON TableB.ID = TableA.Request_ID INNER JOIN Table C ON TableB.Details_ID = TableC.ID
我还要补充说,所有计数都应该在同一行中返回。
有3个不同的调查ID,因此计数需要在survey_id上有where子句。
希望这是有道理的。
非常感谢提前。
答案 0 :(得分:4)
您可以使用通用的交叉表方法
select
TableA.SubjectValue,
SUM(case when somecol='request1' then 1 else 0 end) as request1,
SUM(case when somecol='request2' then 1 else 0 end) as request2,
.
TableB INNER JOIN
TableA ON TableB.ID = TableA.Request_ID INNER JOIN
Table C ON TableB.Details_ID = TableC.ID
group by
TableA.SubjectValue
答案 1 :(得分:1)
假设您在表B(请求)上有外键,您可能不需要加入表C(调查)。
试试这个。
SELECT TableA.SubjectValue, COUNT(TableB.SurveyID)
FROM TableB
INNER JOIN TableA ON TableB.ID = TableA.Request_ID
Group by TableA.SubjectValue
编辑:要包括SurveyID使用此..
SELECT TableC.SurveyID, TableA.SubjectValue, COUNT(TableB.RequestId)
FROM TableA
INNER JOIN TableB ON TableB.SurveyID = TableA.SurveyID
INNER JOIN TableC ON TableC.RequestID = TableB.RequestID
Group by TableA.SubjectValue, TableC.SurveyID
(希望我没有把我的A,B和C混在一起。)