我有一个查询,按需要的列分组,所以我得到了我需要的结果,然后我需要返回结果,这应该通过用另一个字段对先前的结果进行分组来完成。 所以基本上我有一个调查表,
sql = SELECT * FROM Survey S
WHERE S.UserId = 79
Group By S.SurveyNumber
Having SUM (S.Counter) <> 0 ORDER BY S.SubmittedDate DESC
这将返回按数字分组的调查,然后我需要按SurveyName对结果进行分组,并返回该SurveyName的最后提交的调查(Max(submittedDate))。 我可以使用一个查询来实现这一点吗?如果我有
GroupBy S.SurveyNumber, S.SurveyName
然后它会尝试找到两列相同的列。 我该怎么做?
答案 0 :(得分:0)
这就是我理解这一点:
您已经展示了如何检查是否支付了调查费用。现在选择它们的最后日期(最长日期)。基于此,从表中获取相关记录。
select *
from survey
where (surveynumber, submitteddate) in
(
select surveynumber, max(submitteddate)
from survey
where userid = 79
group by surveynumber
having sum(counter) <> 0
);
我可能错了,因为你听起来像调查号码在某种程度上独立于调查名称。 (一个具有不同名称的调查编号?多个调查编号的调查名称相同?)
您可以从更好的数据模型中获益,至少有两个单独的表格用于调查和调查详情。
答案 1 :(得分:0)
我认为它有效:
SELECT
S2.SurveyName
,SUM(S2.Count) as SurveyCount
FROM (
select
SUM(S.SurveyNumber) as Count
,S.SurveyName
FROM Survey S
where S.SurveyNumber <> 0
Group By S.SurveyNumber,S.SurveyName
) as S2
Group By S2.SurveyName