相当于sql server中mysql的查询

时间:2013-07-22 09:12:12

标签: mysql sql-server

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

1 个答案:

答案 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