我正在尝试在SQL Server中执行以下查询,但它正在抛出错误。我该如何解决?
select
T.T_Email
from
Stu_Question S, Tutor_Answer T
where
S.S_Quest_Id = '4f7a1518-a765-40c0-ae53-3ee61eef6673'
and S.S_Quest_Id = T.S_Quest_Id
and (T_Email,T_Answer_Update_Status)
IN (T_Email, Select MAX(T_Answer_Update_Status)
from Tutor_Answer
where S_Quest_Id='4f7a1518-a765-40c0-ae53-3ee61eef6673'
group by T_Email)
and S.S_Quest_Update_Status = (Select MAX(S_Quest_Update_Status)
from Stu_Question
where S_Quest_Id='4f7a1518-a765-40c0-ae53-3ee61eef6673')
答案 0 :(得分:4)
这是你陈述中令人不快的部分:
// this array is necessary for generating links
var ids = [
@foreach($user->frontline as $person)
{
id: {{ $person->id }},
label: "{{ $person->full_name }}",
value: {{ $person->business_month_volume }},
tooltipTemplate: " <%if (segmentLabel){%><%=segmentLabel%>: <%}%><%= numeral(value).format('($0,0[.]00)') %> - <%= numeral(circumference / 6.283).format('(0[.][00]%)') %>"
},
@endforeach
];
// pie chart
var data = [
@foreach($user->frontline as $person)
{
id: {{ $person->id }},
value: {{ $person->business_year_volume }},
color: "{{ $colors[$index]['primary'] }}",
highlight: "{{ $colors[$index]['highlight'] }}",
label: "{{ $person->full_name }}",
labelColor: "black",
labelFontSize: '16px',
segmentLabel: '16px'
},
<?php
if($index < count($colors) -1) $index ++;
else $index = 0;
?>
@endforeach
];
你到底想做什么?
T-SQL的and (T_Email,T_Answer_Update_Status)
IN (T_Email, Select MAX(T_Answer_Update_Status)
from Tutor_Answer
where S_Quest_Id='4f7a1518-a765-40c0-ae53-3ee61eef6673'
group by T_Email)
运算符一次只能处理一个列 - 如下所示:
IN
答案 1 :(得分:1)
marc_s
正确地指出了您查询的违规部分。
您必须尝试将其转换为联接。我将如何做到这一点:
select T.T_Email
from Stu_Question S
join (select T_Email,
row_number() over (partition by S_Quest_Id order by S_Quest_Update_Status desc) as rn
from Tutor_Answer) T
on T.S_Quest_Id=S.S_Quest_Id
and T.rn = 1
where S.S_Quest_Id='4f7a1518-a765-40c0-ae53-3ee61eef6673'
AND S.S_Quest_Update_Status=(Select MAX(S_Quest_Update_Status)
from Stu_Question
where S_Quest_Id='4f7a1518-a765-40c0-ae53-3ee61eef6673')
请注意,您肯定可以进一步改善这一点。但它应该让你去。