0

我最近写了一个使用 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
4

1 回答 1

1

你必须改变

(parametros_mi.nombre, funciones_mi.Nombre) IN (('Battery Level', 'Avg.'), ...)

(parametros_mi.nombre = 'Battery Level' AND funciones_mi.Nombre = 'Avg.') OR ...

并且您需要在选择列表中不属于 group by 的列上使用聚合函数(等)或将它们包含在 group by 中MAX()MIN()

尝试

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
于 2013-07-22T09:36:54.257 回答