sql server 年分表查询SqlFunc.IF问题 返回

SqlSugar 老数据
2 1186
该叫什么 嘢閖 发布于2023/2/17
悬赏:5 飞吻

异常情况SqlFunc.IF

await _servicesTest.AsQueryable().Where(it => it.Name == name).SplitTable(beginTime, endTime)
                .SumAsync(it => SqlFunc.IF(it.Name == "fei").Return(10).End(it.Rate));

异常SQL

SELECT SUM( ( CASE  WHEN ( [Name] = N'fei' )  THEN  N'10'  ELSE [Rate] END )=1 ) FROM  (SELECT [GID],[Name],[Type],[Rate],[CreateTime] FROM [SplitTestTable_20230101] 
 WHERE ( [Name] = N's' )  AND  [CreateTime]>='2023-01-01 00:00:00.000' AND [CreateTime]<= '2023-03-01 00:00:00.000') it

正常情况SqlFunc.IIF

await _servicesTest.AsQueryable().Where(it => it.Name == name).SplitTable(beginTime, endTime)
                .SumAsync(it => SqlFunc.IIF(it.Name=="fei",10,it.Rate));

对应SQL

SELECT SUM(( CASE  WHEN ( [Name] = N'fei' ) THEN 10  ELSE [Rate] END )) FROM  (SELECT [GID],[Name],[Type],[Rate],[CreateTime] FROM [SplitTestTable_20230101] 
 WHERE ( [Name] = N's' )  AND  [CreateTime]>='2023-01-01 00:00:00.000' AND [CreateTime]<= '2023-03-01 00:00:00.000' ) unionTable

SqlFunc.IF 转义时,多了点东西=1,不使用分表结构时转义正常。

sugar版本:5.1.3.50

sqlserver:2014

热忱回答(2)

  • fate sta fate sta VIP0
    2023/2/17

    我这边看一下

    0 回复
  • fate sta fate sta VIP0
    2023/2/19

       .Sum(it=> it.Name=="a"?1:2); 你先这么用,下个版本修复

    0 回复