我最近写了一个使用mysql作为数据库的网站,现在我想将我的数据库更改为sql server但是我的查询有很多问题...我被告知mysql和sql server查询是这么多相似,但我似乎无法想出这一个!!!
SELECT
datos.NumEstacion, MAX(datos.Fecha), datos.NumFuncion, datos.Valor, parametros_mi.nombre AS NombreParametro, funciones_mi.Nombre AS NombreFunction
FROM
(datos JOIN parametros_mi ON datos.NumParametro=parametros_mi.NumParametro) JOIN funciones_mi ON datos.NumFuncion=funciones_mi.NumFuncion
WHERE
datos.NumEstacion=1844 AND ((parametros_mi.nombre, funciones_mi.Nombre) IN (('Battery Level', 'Avg.'), ('Relative Humidity', 'Avg.'), ('Rain', 'Accu'), ('Air Temperature', 'Avg.'), ('Wind Speed', 'Avg.'), ('Wind Direction', 'Avg.'), ('Atmosferic Pressure', 'Avg.'), ('Global Radiation 1', 'Avg.'), ('Visibility', 'Ins.'), ('Snow Level', 'Avg.'), ('Present Weather', 'Ins.'), ('IRS Road Temperature', 'Avg.'), ('IRS Salt Concentration', 'Avg.'), ('IRS Freezing Temperature', 'Avg.'), ('IRS Water Film', 'Avg.'), ('IRS Road Condition', 'Ins.'), ('IRS Up Ground Temperature', 'Avg.'), ('IRS Down Ground Temperature', 'Avg.'), ('ARS Freezing Temperature', 'Avg.'), ('ARS Road Temperature', 'Avg.'), ('ARS Freezing Temperature Corrected', 'Avg.'), ('Freezing Prediction 2 Hours', 'Ins.'), ('IDI Road Condition', 'Ins.'), ('IDI Road Temperature', 'Avg.')))
GROUP BY
datos.NumParametro, datos.NumFuncion
答案 0 :(得分:1)
你必须改变
(parametros_mi.nombre, funciones_mi.Nombre) IN (('Battery Level', 'Avg.'), ...)
到
(parametros_mi.nombre = 'Battery Level' AND funciones_mi.Nombre = 'Avg.') OR ...
并且您需要在选择列表中的列上使用聚合函数(MAX()
,MIN()
等),这些列不属于group by或包含在group by中。
尝试
SELECT
MAX(datos.NumEstacion),
MAX(datos.Fecha),
datos.NumFuncion,
MAX(datos.Valor),
MAX(parametros_mi.nombre) AS NombreParametro,
MAX(funciones_mi.Nombre) AS NombreFunction
FROM
datos JOIN parametros_mi
ON datos.NumParametro=parametros_mi.NumParametro JOIN funciones_mi
ON datos.NumFuncion=funciones_mi.NumFuncion
WHERE
datos.NumEstacion=1844
AND
((parametros_mi.nombre = 'Battery Level'
AND funciones_mi.Nombre = 'Avg.') OR
(parametros_mi.nombre = 'Relative Humidity'
AND funciones_mi.Nombre = 'Avg.') OR
(parametros_mi.nombre = 'Rain'
AND funciones_mi.Nombre = 'Accu') OR
(parametros_mi.nombre = 'Air Temperature'
AND funciones_mi.Nombre = 'Avg.') OR
(parametros_mi.nombre = 'Wind Speed'
AND funciones_mi.Nombre = 'Avg.') OR
(parametros_mi.nombre = 'Wind Direction'
AND funciones_mi.Nombre = 'Avg.') OR
(parametros_mi.nombre = 'Atmosferic Pressure'
AND funciones_mi.Nombre = 'Avg.') OR
(parametros_mi.nombre = 'Global Radiation 1'
AND funciones_mi.Nombre = 'Avg.') OR
(parametros_mi.nombre = 'Visibility'
AND funciones_mi.Nombre = 'Ins.') OR
(parametros_mi.nombre = 'Snow Level'
AND funciones_mi.Nombre = 'Avg.') OR
(parametros_mi.nombre = 'Present Weather'
AND funciones_mi.Nombre = 'Ins.') OR
(parametros_mi.nombre = 'IRS Road Temperature'
AND funciones_mi.Nombre = 'Avg.') OR
(parametros_mi.nombre = 'IRS Salt Concentration'
AND funciones_mi.Nombre = 'Avg.') OR
(parametros_mi.nombre = 'IRS Freezing Temperature'
AND funciones_mi.Nombre = 'Avg.') OR
(parametros_mi.nombre = 'IRS Water Film'
AND funciones_mi.Nombre = 'Avg.') OR
(parametros_mi.nombre = 'IRS Road Condition'
AND funciones_mi.Nombre = 'Ins.') OR
(parametros_mi.nombre = 'IRS Up Ground Temperature'
AND funciones_mi.Nombre = 'Avg.') OR
(parametros_mi.nombre = 'IRS Down Ground Temperature'
AND funciones_mi.Nombre = 'Avg.') OR
(parametros_mi.nombre = 'ARS Freezing Temperature'
AND funciones_mi.Nombre = 'Avg.') OR
(parametros_mi.nombre = 'ARS Road Temperature'
AND funciones_mi.Nombre = 'Avg.') OR
(parametros_mi.nombre = 'ARS Freezing Temperature Corrected'
AND funciones_mi.Nombre = 'Avg.') OR
(parametros_mi.nombre = 'Freezing Prediction 2 Hours'
AND funciones_mi.Nombre = 'Ins.') OR
(parametros_mi.nombre = 'IDI Road Condition'
AND funciones_mi.Nombre = 'Ins.') OR
(parametros_mi.nombre = 'IDI Road Temperatu
re' AND funciones_mi.Nombre = 'Avg.'))
GROUP BY
datos.NumParametro, datos.NumFuncion