Problema con consulta de SQL

Hola,
Tengo una base de datos en access que la estoy migrando a sql server 8.0 y a vb6.0, el problema que tengo es al querer migrar las consultas al sql server 8.0.
Me encuentro con problemas como el siguiente:
No me aclaro muy bien con la conversion del iif que se utiliza en access al select case when ... The ... Else... End, de sql.
Quiero decir que tengo esta consulta:
SELECT DetalleOfertas.Id_Oferta, Sum((((IIf(IsNull([Unidades]),0,[Unidades]))*(IIf(IsNull([MDO]),0,[MDO])))+(IIf(IsNull([Material]),0,[Material])))) AS T, Sum((((IIf(IsNull([Unidades]),0,[Unidades]))*(IIf(IsNull([MDO]),0,[MDO])))+((IIf(IsNull([Material]),0,[Material]))/(1+(IIf(IsNull([Beneficio]),0,[Beneficio]))/100)))) AS TSin
FROM DetalleOfertas
GROUP BY DetalleOfertas.Id_Oferta;
Y no tengo ni idea de como pasarla a sql. Con un ejemplo me podría valer de mi mismo para el resto de consultas.
Si me podrías ayudar te lo agradecería, mucha gracias de antemano.
Un saludo,

1 Respuesta

Respuesta
1
Haber si se entiende:
Utilizar CASE
La función CASE es una expresión especial de Transact-SQL que permite que se muestre un valor alternativo dependiendo del valor de una columna. Este cambio es temporal, con lo que no hay cambios permanentes en los datos. Por ejemplo, la función CASE puede mostrar California en un conjunto de resultados de una consulta de las filas que tengan el valor CA en la columna state.
La función CASE está compuesta de:
La palabra clave CASE.
El nombre de columna que se va a transformar.
Cláusulas WHEN que especifican las expresiones que se van a buscar y cláusulas THEN que especifican las expresiones que las van a reemplazar.
La palabra clave END.
Una cláusula AS opcional que define un alias de la función CASE.
En este ejemplo se muestra, en el conjunto de resultados de la consulta, el nombre completo del estado en el que vive cada autor:
SELECT au_fname, au_lname,
CASE state
WHEN 'CA' THEN 'California'
WHEN 'KS' THEN 'Kansas'
WHEN 'TN' THEN 'Tennessee'
WHEN 'OR' THEN 'Oregon'
WHEN 'MI' THEN 'Michigan'
WHEN 'IN' THEN 'Indiana'
WHEN 'MD' THEN 'Maryland'
WHEN 'UT' THEN 'Utah'
END AS StateName
FROM pubs.dbo.authors
ORDER BY au_lname
Véase también
CASE
Nullif
Coalesce
Procesamiento condicional de los datos con CASE

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas