(貌似)简单查询的SQL错误

时间:2013-03-19 19:40:17

标签: sql

select distinct 
    assignedTo, 
    alert_id, 
    insert_date_time, 
    alert_status_id, 
    alert_action_id, 
    alert_call_reason_id, 
    target_date  
from Case_Management.AlertDetail 

工作正常。

select distinct 
    assignedTo, 
    alert_id, 
    max(insert_date_time), 
    alert_status_id, 
    alert_action_id, 
    alert_call_reason_id, 
    target_date  
from Case_Management.AlertDetail 

返回错误列'Case_Management.AlertDetail.assignedTo'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。

我很难过。

3 个答案:

答案 0 :(得分:5)

错误很明显,将不在聚合函数中的列添加到GROUP BY子句中:

select 
    assignedTo, 
    alert_id, 
    max(insert_date_time), 
    alert_status_id, 
    alert_action_id, 
    alert_call_reason_id, 
    target_date  
from Case_Management.AlertDetail 
GROUP BY assignedTo, 
         alert_id,
         alert_status_id, 
         alert_action_id,
         alert_call_reason_id, 
         target_date;

答案 1 :(得分:0)

您需要在第二个查询中使用group by子句,因为您有一个聚合。汇总是

max(insert_date_time)

答案 2 :(得分:0)

想想你想要实现的目标。您想要选择一些记录,但其中一列不是常规记录的内容,而是所有列的摘要。你不能混合它。

您需要对数据进行分组以实现该目标或使用子选择。