varias unir una tablas sola ejemplo datos consulta como combinar bases sql ms-access

sql - unir - ejemplo consulta de union access



fusionar la alternativa en Access SQL (6)

En T-SQL, puedes hacer esto:

SELECT ProductId, COALESCE(Price, 0) FROM Products

¿Cómo se hace lo mismo en Access SQL? Veo ejemplos para hacerlo con Nz en VBA, pero estoy buscando el equivalente SQL.

Gracias.


Access admite la función Nz y le permite usarla en una consulta. Sin embargo, tenga en cuenta que Nz es lo mismo que la función T-SQL ISNULL. No puede tomar una cantidad arbitraria de parámetros como puede COALESCE.


El uso de IsNull() , Nz() y las funciones de conversión de datos son funciones integradas de VBA y solo ralentizarán tus consultas en versiones anteriores a 2003. En cuanto a la datatyping, usa CCur() para garantizar tu tipo de datos, pero solo si necesita realizar comparaciones sólidas o simplemente establecer la propiedad de formato en Moneda en la columna. Es la declaración IF lo que ralentiza más las cosas, ya que agrega una función más a su rutina

usando esta solución: Nz([Price], CCur(0))

la única vez que CCur() se ejecutará es cuando Price Is Null, por lo tanto, en general, este es probablemente el más rápido.

El punto es que con la menor cantidad de funciones totales utilizadas , más rápido se ejecutarán las consultas.


La función COALESCE o NULLIF es el estándar utilizado en el servidor SQL para una buena migración de acceso. ISNULLor IIF o CHOOSE son funciones no estándar.


Parece que puedo usar:

SELECT ProductId, Nz(Price, 0) FROM Products

Parece estar funcionando bien.


Si está en una consulta de Access, puede intentar esto:

"Price = IIf([Price] Is Null,0,[Price])"


Usar Iif(Price is null, 0, Price) debería darle el mejor rendimiento (vea los consejos de rendimiento de Allen Browne ). Sin embargo, SQL Server Coalesce() tiene la gran ventaja sobre Iif() y Nz() que puede manejar varios parámetros en una cascada. Así que creé este rápido equivalente de VBA:

Function Coalesce(ParamArray varValues()) As Variant ''returns the first non null value, similar to SQL Server Coalesce() function ''Patrick Honorez --- www.idevlop.com Dim i As Integer Coalesce = Null For i = LBound(varValues) To UBound(varValues) If Not IsNull(varValues(i)) Then Coalesce = varValues(i) Exit Function End If Next End Function