2015-05-13 2 views
0

Как бы вы преобразовали следующий sql, который содержит число дел, группу by, union all to nhibernate? Этот комплекс sqql с группой по ROLLUP() постоянного объединения таблицы все производные столбцы запросаnhibernate сложный запрос sql с группой ROLLUP() объединения permenant table all производный запрос

select 
 
CASE 
 
     WHEN GROUPING([BUSINESS_UNIT]) = 1 THEN 'Total' 
 
     ELSE [BUSINESS_UNIT] 
 
     END [BUSINESS_UNIT] 
 
    , SUM(InjuryIllnessTtlCount) InjuryIllnessTtlCount 
 
from (
 
select i.INCIDENT_ID 
 
     ,b.BUSINESS_UNIT 
 
    ,case 
 
     when (i.INJURY_ILLNESS_TYPE_ID=4 ) then 1 --'Injury/Illness (Near Miss with High Severity Potential)' 
 
     else 0 
 
    end as InjuryIllnessTtlCount 
 
from tblIncident i 
 
join tblBUSINESS_UNIT b on i.BUS_UNIT_ID = b.BUS_UNIT_ID 
 
--where (CONVERT(varchar(10),i.create_dt, 111) between '2015/01/12' and '2015/05/12') 
 
union all 
 
select 0 incident_id 
 
     
 
     ,b.BUSINESS_UNIT 
 
     ,0 InjuryIllnessTtlCount 
 
from 
 
tblBUSINESS_UNIT b 
 
) abc 
 
group by ROLLUP(abc.BUSINESS_UNIT)

ответ

0

Когда дело доходит до этого сложных запросов, преобразование в NHibernate либо невозможно, либо не делает стоило того. Так что мои два цента должны идти,

var query = <your query>; 

var session = sessionFactory.OpenSession(); 
var result =session.CreateSQLQuery(query) 
       .List(); 

Если запрос выполняется непосредственно.