Hi everyone!

I have a problem with a NHibernate query with sub-query for a report.

I have a Native SQL Query (SQLServer) with nested sub query and I need
convert to NHibernate HQL.

The Native SQL query is:

SELECT
    ma.persona,
    ma.totalA,
    mb.totalB,
    (ma.totalA + mb.totalB) as totalAyB
    FROM
    (
    SELECT
    person.NomPersonal as persona,
    SUM(det.Cantidad * denom.Valor_Denominacion) as totalA
    FROM Transaccion AS td
    INNER JOIN tk_transaccion_detalle_certificado as det ON
(td.Id_Transaccion = det.Id_Transaccion)
    INNER JOIN tk_servicio as serv ON (td.Id_Servicio =
serv.Id_Servicio)
    INNER JOIN Tarjeta as tarj ON (tarj.Id_Tarjeta = td.Id_Tarjeta)
    INNER JOIN Personal as person ON (tarj.Id_Personal =
person.Id_Personal)
    INNER JOIN Denominacion as denom ON (det.Cod_Denominacion =
denom.Cod_Denominacion)
    INNER JOIN Servicio_Det as rem ON (det.Cod_Remesa =
rem.Cod_Remesa)
    WHERE serv.Id_Servicio = '3001222320112453'
    AND rem.Ubicacion = 'A'
    GROUP BY person.NomPersonal  ) as ma
INNER JOIN
        (
    SELECT
    person.NomPersonal as persona,
    SUM(det.Cantidad * denom.Valor_Denominacion) as totalB
    FROM Transaccion AS td
    INNER JOIN tk_transaccion_detalle_certificado as det ON
(td.Id_Transaccion = det.Id_Transaccion)
    INNER JOIN tk_servicio as serv ON (td.Id_Servicio =
serv.Id_Servicio)
    INNER JOIN Tarjeta as tarj ON (tarj.Id_Tarjeta = td.Id_Tarjeta)
    INNER JOIN Personal as person ON (tarj.Id_Personal =
person.Id_Personal)
    INNER JOIN Denominacion as denom ON (det.Cod_Denominacion =
denom.Cod_Denominacion)
    INNER JOIN Servicio_Det as rem ON (det.Cod_Remesa =
rem.Cod_Remesa)
    WHERE serv.Id_Servicio = '3001222320112453'
    AND rem.Ubicacion = 'B'
    GROUP BY person.NomPersonal  ) as mb ON (ma.persona = mb.persona)

The idea is to transform in HQL, but it does not work, so far I have
the following HQL:

select
    ma.persona,
    ma.totalA,
    mb.totalB,
    (ma.totalA + mb.totalB) as totalAyB
    from
    (
    select person.NomPersonal as persona, sum(det.Cantidad *
denom.Valor) as totalA from Transaccion td
    inner join td.TransaccionDetalles as det
    join td.Tarjeta as tarj
    join det.Denominacion as denom
    join det.Remesa as rem
    join tarj.Persona as person
    where td.Servicio.Id = :servicioId
    and rem.Ubicacion = 'A'
    group by person.NomPersonal
    order by person.NomPersonal desc) as ma
        join
        (
    select person.NomPersonal as persona, sum(det.Cantidad *
denom.Valor) as totalB from Transaccion td
    inner join td.TransaccionDetalles as det
    join td.Tarjeta as tarj
    join det.Denominacion as denom
    join det.Remesa as rem
    join tarj.Persona as person
    where td.Servicio.Id = :servicioId
    and rem.Ubicacion = 'B'
    group by person.NomPersonal
    order by person.NomPersonal desc) as mb ON (ma.persona =
mb.persona)


Any idea how it could be converted to NHibernate?

Thanks and greetings!

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to nhusers@googlegroups.com.
To unsubscribe from this group, send email to 
nhusers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to