transponer tabla pasar multiples filas ejemplos ejemplo convertir columnas sql ms-access null case

pasar - sql server transponer tabla



dónde colocar CASO CUANDO la columna ES NULA en esta consulta (4)

¡Gracias por toda tu ayuda! @Svetoslav Tsolov lo tenía muy cerca, pero todavía estaba recibiendo un error, hasta que descubrí que el paréntesis de cierre estaba en el lugar equivocado. Aquí está la consulta final que funciona:

SELECT dbo.AdminID.CountryID, dbo.AdminID.CountryName, dbo.AdminID.RegionID, dbo.AdminID.[Region name], dbo.AdminID.DistrictID, dbo.AdminID.DistrictName, dbo.AdminID.ADMIN3_ID, dbo.AdminID.ADMIN3, (CASE WHEN dbo.EU_Admin3.EUID IS NULL THEN dbo.EU_Admin2.EUID ELSE dbo.EU_Admin3.EUID END) AS EUID FROM dbo.AdminID LEFT OUTER JOIN dbo.EU_Admin2 ON dbo.AdminID.DistrictID = dbo.EU_Admin2.DistrictID LEFT OUTER JOIN dbo.EU_Admin3 ON dbo.AdminID.ADMIN3_ID = dbo.EU_Admin3.ADMIN3_ID

Tengo problemas para traducir una consulta de MS Access a SQL:

SELECT id, col1, col2, col3 FROM table1 LEFT OUTER JOIN table2 ON table1.id = table2.id LEFT OUTER JOIN table3 ON table1.id = table3.id

hasta ahora todo bien, pero aquí está la parte (CASE) donde me quedo atascado:

CASE WHEN table3.col3 IS NULL THEN table2.col3 AS col4 ELSE table3.col3 as col4

Sé que la línea anterior no funciona, pero espero que insinúe lo que estoy tratando de lograr. ¡Gracias!

ACTUALIZACIÓN: Todas las sugerencias hasta ahora han resultado en "Sintaxis incorrecta cerca del error de la palabra clave ''AS''", así que tal vez me falta algo más. Debajo de la consulta real. El problema es que tenemos dos tablas, ambas con una columna EUID. Si dbo.EU_Admin3.EUID no es NULL, tiene prioridad en la unión. Si dbo.EU_Admin3.EUID es NULL, use dbo.EU_Admin2.EUID en su lugar. Espero que aclare esto.

SELECT dbo.AdminID.CountryID, dbo.AdminID.CountryName, dbo.AdminID.RegionID, dbo.AdminID.[Region name], dbo.AdminID.DistrictID, dbo.AdminID.DistrictName, dbo.AdminID.ADMIN3_ID, dbo.AdminID.ADMIN3 (CASE WHEN dbo.EU_Admin3.EUID IS NULL THEN dbo.EU_Admin2.EUID ELSE dbo.EU_Admin3.EUID END AS EUID) FROM dbo.AdminID LEFT OUTER JOIN dbo.EU_Admin2 ON dbo.AdminID.DistrictID = dbo.EU_Admin2.DistrictID LEFT OUTER JOIN dbo.EU_Admin3 ON dbo.AdminID.ADMIN3_ID = dbo.EU_Admin3.ADMIN3_ID


No puede entender su problema real, pero su declaración de caso es incorrecta

CASE WHEN TABLE3.COL3 IS NULL THEN TABLE2.COL3 ELSE TABLE3.COL3 END AS COL4


Parece que podría pertenecer a la declaración de selección:

SELECT id, col1, col2, col3, (CASE WHEN table3.col3 IS NULL THEN table2.col3 AS col4 ELSE table3.col3 as col4 END) FROM table1 LEFT OUTER JOIN table2 ON table1.id = table2.id LEFT OUTER JOIN table3 ON table1.id = table3.id


Prueba esto:

CASE WHEN table3.col3 IS NULL THEN table2.col3 ELSE table3.col3 END as col4

El as col4 debe ir al final del CASO de la declaración. También ten en cuenta que te falta el END también.

Otra opción probablemente más simple sería:

IIf([table3.col3] Is Null,[table2.col3],[table3.col3])

Solo para aclarar, MS Access no es compatible con COALESCE. Si fuera así, sería la mejor manera de hacerlo.

Editar después de un cambio radical de pregunta:

Para convertir la consulta en SQL Server, puede usar COALESCE (por lo que técnicamente se respondió antes):

SELECT dbo.AdminID.CountryID, dbo.AdminID.CountryName, dbo.AdminID.RegionID, dbo.AdminID.[Region name], dbo.AdminID.DistrictID, dbo.AdminID.DistrictName, dbo.AdminID.ADMIN3_ID, dbo.AdminID.ADMIN3, COALESCE(dbo.EU_Admin3.EUID, dbo.EU_Admin2.EUID) FROM dbo.AdminID

Por cierto, su declaración CASE faltaba un , antes del campo. Es por eso que no funcionó.