2

在 SQL 中,3 个表连接在一起,检索 3 个值:value, time, value_name. 值是我想要按天平均的值,time大约 10 分钟的日期时间格式 - 我希望它每天转换,每天产生一行 - 我的 value_name 女巫可以是任何选定的值。

这是我的语法:

select time.entry_time, value_type.value_name, 
       avg(value.value) AVG_VALUE
FROM Value
inner join time on value.time_id = time.id
inner join value_type on value.type_id = value_type.id
WHERE value_type.value_name = 'CUSTOM'
GROUP BY DATEPART(DAY, time.entry_time)

在这里我得到一个错误:

选择列表中的列time.entry_time无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。

你能帮我用这个语法吗?

4

1 回答 1

3

两个问题:

  1. 您选择time.entry_time,但正在分组DATEPART(DAY, time.entry_time)。你想要哪个入场时间?您的意思是改为选择DATEPART(DAY, time.entry_time)吗?

  2. 您没有按 分组value_type.value_name。您需要将此添加到GROUP BY子句中。(是的,即使只有一个值“CUSTOM”)。

尝试:

select DATEPART(DAY, time.entry_time), value_type.value_name, 
       avg(value.value) AVG_VALUE
FROM Value
inner join time on value.time_id = time.id
inner join value_type on value.type_id = value_type.id
WHERE value_type.value_name = 'CUSTOM'
GROUP BY DATEPART(DAY, time.entry_time), value_type.value_name
于 2012-09-24T08:02:06.273 回答