Sqlsugar的case when語法用於資料統計實戰
阿新 • • 發佈:2021-01-15
技術標籤:sql
1.三元運算子方式
//只統計數量,所以固定返回1和0; var query = Db.Queryable<Orders,Service>((a, b) => new object[] { JoinType.Left,a.OrderID==b.OrderID }); var infoDTO = query.Select((a, b) => new ServiceStatusCountDTO { - ConfirmCount = SqlFunc.AggregateSum(SqlFunc.IIF(a.ServiceStatus== Sea.Enum.OrderFlowStatus.dai_que_ren.GetStringValue(),1,0)), - HistoryCount = SqlFunc.AggregateSum(SqlFunc.IIF(a.ServiceStatus == Sea.Enum.OrderFlowStatus.yi_yan_shou.GetStringValue() && b.WarrantyExpiredDate < nowTime, 1, 0)) }).First();
2.if else方式
//此處示例沒有else判斷,省略了部分 var query = Db.Queryable<Orders,Service>((a, b) => new object[] { JoinType.Left,a.OrderID==b.OrderID }); var infoDTO = query.Select((a, b) => new ServiceStatusCountDTO { ConfirmCount = SqlFunc.AggregateSum(SqlFunc.IF(a.ServiceStatus== Sea.Enum.OrderFlowStatus.dai_que_ren.GetStringValue()).Return(1).End(0)), CompletedCount = SqlFunc.AggregateSum(SqlFunc.IF(a.ServiceStatus == Sea.Enum.OrderFlowStatus.yi_yan_shou.GetStringValue() && b.WarrantyExpiredDate >= nowTime).Return(1).End(0)) }).First();
3.使用group by代替case when
4.group by和case when 在資料統計時效能上的區別