在sql中使用聚合函数
此查询不起作用的原因:-在sql中使用聚合函数,sql,sql-server,Sql,Sql Server,此查询不起作用的原因:- SELECT b.byhub, Count(awbno) FROM (SELECT awbno, byhub, entrydatetime, Max(entrydatetime) FROM wbbooking GROUP BY awbno, byhub,
SELECT b.byhub,
Count(awbno)
FROM (SELECT awbno,
byhub,
entrydatetime,
Max(entrydatetime)
FROM wbbooking
GROUP BY awbno,
byhub,
entrydatetime) B
INNER JOIN (SELECT refno,
Max(entrydatetime)
FROM wbmmreceiving
GROUP BY refno) R
ON B.awbno = R.refno
WHERE CONVERT(DATE, b.entrydatetime) BETWEEN '2016-10-13' AND '2016-10-13'
GROUP BY b.byhub
Msg 8155, Level 16, State 2, Line 2
No column name was specified for column 4 of 'b'.
Msg 8155, Level 16, State 2, Line 3
No column name was specified for column 2 of 'r'.
执行此查询后,我获得了此类错误:-
SELECT b.byhub,
Count(awbno)
FROM (SELECT awbno,
byhub,
entrydatetime,
Max(entrydatetime)
FROM wbbooking
GROUP BY awbno,
byhub,
entrydatetime) B
INNER JOIN (SELECT refno,
Max(entrydatetime)
FROM wbmmreceiving
GROUP BY refno) R
ON B.awbno = R.refno
WHERE CONVERT(DATE, b.entrydatetime) BETWEEN '2016-10-13' AND '2016-10-13'
GROUP BY b.byhub
Msg 8155, Level 16, State 2, Line 2
No column name was specified for column 4 of 'b'.
Msg 8155, Level 16, State 2, Line 3
No column name was specified for column 2 of 'r'.
只需为子查询指定列名,如下所示:
SELECT b.byhub,
Count(awbno)
FROM (SELECT awbno,
byhub,
entrydatetime,
Max(entrydatetime) max_entrydatetime
FROM wbbooking
GROUP BY awbno,
byhub,
entrydatetime) B
INNER JOIN (SELECT refno,
Max(entrydatetime) max_entrydatetime
FROM wbmmreceiving
GROUP BY refno) R
ON B.awbno = R.refno
WHERE CONVERT(DATE, b.entrydatetime) BETWEEN '2016-10-13' AND '2016-10-13'
GROUP BY b.byhub
出现错误的原因是您没有为聚合列
Max(entrydatetime)
指定名称。将其更改为Max\u entrydatetimeMax(entrydatetime)
这个问题有点奇怪。子查询B
选择entrydatetime
以及Max(entrydatetime)
。但是由于entrydatetime
包含在分组依据列表中,因此Max(entrydatetime)
将始终与entrydatetime
相同
如果希望最后一个entrydatetime
perawbno
和byhub
,则不要按entrydatetime
分组,只将其作为Max(entrydatetime)
包含在选择列表中。如果确实要按此日期列分组,则不要将其作为Max(entrydatetime)
包含
第二个子查询的目的是什么?其返回的列中没有一个用于联接。伯爵需要吗
为什么在外部查询中包含where子句?如果将其包含在第一个子查询中,则效率更高,entrydatetime
列不再需要返回。您使用的SQL引擎是什么?它区分大小写吗?B对B?由于您按entrydatetime
分组,您希望Max(entrydatetime)
产生什么结果?您的查询似乎比需要的复杂。请显示wbbooking和wbmmreceiving表的说明