我在SQL中有以下代码:
SELECT
COUNT(*) as t,
t1.EMPLID,
t3.DNI,
t1.PUNCH_DTTM,
PUNCH_TYPE,
TCD_ID,
t2.PCADescripcion,
t2.DFIDescripcion,
t2.Alias,
t5.apellido,
t4.planta
FROM
[MatrizDB].[db_owner].[Historial_TRH] t1
LEFT JOIN
MatrizDB.db_owner.Dispositivos_TRH t2 ON t2.RefId = TCD_ID
LEFT JOIN
MatrizDB.db_owner.Pipolsoft_Legajos t3 ON t3.EMPLID = t1.EMPLID
LEFT JOIN
[MatrizDB].[dbo].[nomina_fase_two] t4 ON t4.dni_id = t3.DNI
LEFT JOIN
[MatrizDB].dbo.v_nomina t5 ON t5.nroDocumento = t4.dni_id
WHERE
CONVERT(VARCHAR(25), PUNCH_DTTM, 120) LIKE '2019-04-24%'
AND t4.dni_responsable = 30329134
AND PUNCH_TYPE = 5
执行查询时,出现此错误
在选择列表中无效,因为它既不在聚合函数中也不在GROUP BY子句中。
答案 0 :(得分:4)
这个评论太长了。
您不理解错误消息的哪一部分?
您在count(*)
中有select
,因此您的查询是汇总查询。您没有group by
;没有group by
的聚合查询将完全返回 一行。对于其他列,该行应包含哪些值?
一个答案是将所有未聚合的列放在group by
中。另一方法是从select
中删除所有未聚合的列。另一种方法是将count(*)
替换为窗口函数(例如count(*) over ()
,或者我怀疑您想要的是row_number() over (order by <some column>)
。
如果没有样本数据,预期结果以及您要做什么的解释,您的问题就太模糊了。
答案 1 :(得分:2)
使用汇总函数count
时必须按分组依据
SELECT
count(*) as t
,t1.EMPLID
,t3.DNI
,t1.PUNCH_DTTM
,PUNCH_TYPE
,TCD_ID
,t2.PCADescripcion
,t2.DFIDescripcion
,t2.Alias
,t5.apellido
,t4.planta
FROM [MatrizDB].[db_owner].[Historial_TRH] t1
left join MatrizDB.db_owner.Dispositivos_TRH t2
on t2.RefId = TCD_ID
left join MatrizDB.db_owner.Pipolsoft_Legajos t3
on t3.EMPLID = t1.EMPLID
left join [MatrizDB].[dbo].[nomina_fase_two] t4
on t4.dni_id = t3.DNI
left join [MatrizDB].dbo.v_nomina t5
on t5.nroDocumento = t4.dni_id
where CONVERT(VARCHAR(25),PUNCH_DTTM,120) LIKE '2019-04-24%'
AND t4.dni_responsable = 30329134 and PUNCH_TYPE = 5
group by t1.EMPLID
,t3.DNI
,t1.PUNCH_DTTM
,PUNCH_TYPE
,TCD_ID
,t2.PCADescripcion
,t2.DFIDescripcion
,t2.Alias
,t5.apellido
,t4.planta