【问题标题】:SQL to NHibernate queryover with SQL function ValuesSQL to NHibernate queryover with SQL function Values
【发布时间】:2018-02-26 08:19:47
【问题描述】:

我正在尝试进行查询,以返回名为 StatusTaxatieAantal 的对象列表。

    public class StatusTaxatieAantal
{
    public long Aantal { get; set; }
    public long StatusTaxatie { get; set; }
}

我已经有了返回列表的 SQL 查询,但现在我需要将其转换为 NHibernate 查询。我对这种编写查询的方式没有经验。这是我创建的 SQL 查询和结果。

SELECT SUB.count,x.StatTax
FROM (VALUES (30),(28),(22),(20),(18),(16),(14),(12),(11),(10),(0)) x(StatTax)
left join
(
SELECT COUNT(*) AS count, wb.StatTax
FROM dbo.Wbp wb 
INNER JOIN dbo.tax ta ON wb.WozNum = ta.WozNum AND wb.WrdPeildat = ta.WrdPeildat 
INNER JOIN dbo.Woz wo ON wo.WozNum = ta.WozNum  
WHERE wb.wrdpeildat = 20170101 AND wb.IsLaatste = 1  AND (wo.Soc < '2000' or wo.Soc = '5100') 
GROUP BY wb.StatTax
)
SUB ON x.StatTax = SUB.StatTax 

https://imgur.com/Eq2IcTX
count 是 Aantal,StatTax 是 StatusTaxatie。如果有人知道如何将其转换为 queryover 或有解释它的网站,我想知道。

【问题讨论】:

    标签: sql c nhibernate left-join queryover


    【解决方案1】:
    IList<StatusTaxatieAantal> nietWoningList =
                Session.QueryOver(() => wbp)
                    .JoinAlias(() => wbp.Tax, () => tax)
                    .JoinAlias(() => tax.Woz, () => woz)
                    .JoinAlias(() => woz.Soc, () => soc)
                    .Where(() => wbp.Waardepeildatum == waardePeilDatum)
                    .And(() => wbp.IsLaatste)
                    .And(
                        Restrictions.And(
                            Restrictions.Gt(Projections.Property(() => soc.Id), "2000"),
                           !Restrictions.Eq(Projections.Property(() => soc.Id), "5100"))
                    )
                    .SelectList(list => list
                        .SelectCount(() => wbp.WozNummer).WithAlias(() => result.Aantal)
                        .SelectGroup(() => wbp.StatusTaxatie).WithAlias(() => result.StatusTaxatie)
                    )
                    .OrderBy(() => wbp.StatusTaxatie).Desc
                    .TransformUsing(Transformers.AliasToBean<StatusTaxatieAantal>())
                    .List<StatusTaxatieAantal>();
    

    在此之后,我列出了所有状态,并检查返回列表是否具有 de 状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-25
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 2010-09-06
      • 2021-02-03
      相关资源
      最近更新 更多