parent nodes: SQLapuntes
Case When Then Else End
CASE LF.ID_ARTICULO WHEN 312 THEN 444 ELSE LF.ID_ARTICULO END AS 'ID_ARTICULO'
SELECT
CASE LF.ID_ARTICULO WHEN 312 THEN 444 ELSE LF.ID_ARTICULO END AS 'ID_ARTICULO',
SELECT (LF.ID_LINEASFACTURA+@OFFSET_LINEASFACTURA) AS 'ID_LINEASFACTURA+',
(LF.ID_FACTURA+@OFFSET_FACTURACION) AS 'ID_FACTURA+', LF.ORDEN,
CASE LF.ID_ARTICULO WHEN 312 THEN 444 ELSE LF.ID_ARTICULO END AS 'ID_ARTICULO',
LF.UNIDADES, LF.PORCEN_DESCUENTO, LF.ID_IVA, LF.PRECIO_TOTAL, LF.ID_PEDIDO
FROM FACTURACION INNER JOIN LINEAS_FACTURA LF ON FACTURACION.ID_FACTURA = LF.ID_FACTURA
WHERE (FACTURACION.ANIO = 2010)
ORDER BY ID_ARTICULO
expresiones combinadas
CASE WHEN (IVA.TIPO1 IN (16, 18)) THEN SUM(LINEAS_FACTURA.PRECIO_TOTAL) ELSE 0 END AS BASENRMAL,
ACCESS
El equivalente en ACCESS al CASE de SQL Server:-- Access:
SELECT Switch(
On=1,'On',
On=0,'Off',
TRUE,'other'
) FROM table
-- SQL Server
SELECT CASE
WHEN On=1 THEN 'On'
WHEN On=0 THEN 'Off'
ELSE 'other'
END FROM table
CASE dentro del WHERE
SELECT ANCNOTARYOFFICEHISTORY.OFFICEID, ANCNOTARYOFFICEHISTORY.OFFICENAME AS 'AX_OFFICE_NAME', @NOMBRE_NOTARIA AS 'Access NOTARIA', @ID_ACCESS_NOTARIA AS 'Access IDNotaria'
FROM ANCNOTARYOFFICEHISTORY
INNER JOIN AI_NOTARIOS
ON ( ANCNOTARYOFFICEHISTORY.NOTARYID = AI_NOTARIOS.ACCOUNTNUM AND ANCNOTARYOFFICEHISTORY.DATAAREAID = AI_NOTARIOS.DATAAREAID )
WHERE AI_NOTARIOS.ID_NOTARIO = @ID_ACCESS_NOTARIO
AND @FECHA BETWEEN ANCNOTARYOFFICEHISTORY.FROMDATETIME AND (CASE WHEN ANCNOTARYOFFICEHISTORY.TODATETIME='01/01/1900' THEN '31/12/2999' ELSE ANCNOTARYOFFICEHISTORY.TODATETIME END)
AND ANCNOTARYOFFICEHISTORY.DATAAREAID = 'CLM'
AND AI_NOTARIOS.DATAAREAID = 'CLM'
En Access no hay un ELSE o un DEFAULT por lo tanto hay que poner una última evaluación que contradiga a las anteriores:SELECT
SWITCH(
ID_DEPARTAMENTO = 1, 'Colegio',
ID_DEPARTAMENTO = 2, 'Colegio',
ID_DEPARTAMENTO = 3, 'Circular',
ID_DEPARTAMENTO = 4, 'Circular',
ID_DEPARTAMENTO = 5, 'Expediente',
ID_DEPARTAMENTO = 7, 'ComisAux',
ID_DEPARTAMENTO = 8, 'ComisAux',
ID_DEPARTAMENTO NOT IN (1,2,3,4,5,7,8), '***ERROR***'
) AS 'Grupo de documento'
FROM DATOS;
http://sqlserver2000.databases.aspfaq.com/what-are-the-main-differences-between-access-and-sql-server.html