From 1b84a0069679c92ccaff9aa8c33023e4d34262cd Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Tue, 10 May 2022 09:28:04 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=20=E5=AD=90=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=20sum/min/max/avg=20=E9=BB=98=E8=AE=A4=E5=8A=A0=20isn?= =?UTF-8?q?ull=20=E9=98=B2=E6=AD=A2=E4=B8=BA=20NULL=20=E6=83=85=E5=86=B5?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql.DbContext/FreeSql.DbContext.xml | 9 -------- .../GBase/Curd/GBaseSelectTest.cs | 18 +++++++-------- .../MySqlConnector/Curd/MySqlSelectTest.cs | 16 +++++++------- .../Dameng/Curd/DamengSelectTest.cs | 18 +++++++-------- .../Default/Curd/OdbcSelectTest.cs | 18 +++++++-------- .../KingbaseES/Curd/KingbaseESSelectTest.cs | 18 +++++++-------- .../MySql/Curd/MySqlSelectTest.cs | 18 +++++++-------- .../Oracle/Curd/OracleSelectTest.cs | 22 +++++++++---------- .../PostgreSQL/Curd/PostgreSQLSelectTest.cs | 18 +++++++-------- .../SqlServer/Curd/SqlServerSelectTest.cs | 16 +++++++------- .../Sqlite/Curd/SqliteSelectTest.cs | 16 +++++++------- .../Dameng/Curd/DamengSelectTest.cs | 16 +++++++------- .../Firebird/Curd/FirebirdSelectTest.cs | 16 +++++++------- .../KingbaseES/Curd/KingbaseESSelectTest.cs | 22 ++++++++----------- .../MsAccess/Curd/MsAccessSelectTest.cs | 20 ++++++++++------- .../MySql/Curd/MySqlSelectTest.cs | 16 +++++++------- .../Oracle/Curd/OracleSelectTest.cs | 16 +++++++------- .../PostgreSQL/Curd/PostgreSQLSelectTest.cs | 16 +++++++------- .../ShenTong/Curd/ShenTongSelectTest.cs | 18 +++++++-------- .../SqlServer/Curd/SqlServerSelectTest.cs | 16 +++++++------- .../Sqlite/Curd/SqliteSelectTest.cs | 16 +++++++------- FreeSql/Internal/CommonExpression.cs | 6 ++--- 22 files changed, 178 insertions(+), 187 deletions(-) diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index 20e648e6..38f8de9d 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -559,14 +559,5 @@ - - - 批量注入 Repository,可以参考代码自行调整 - - - - - - diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/Curd/GBaseSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/Curd/GBaseSelectTest.cs index 1d538461..37261cdd 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/Curd/GBaseSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.GBase/GBase/Curd/GBaseSelectTest.cs @@ -1,4 +1,4 @@ -using FreeSql.DataAnnotations; +using FreeSql.DataAnnotations; using System; using System.Collections.Generic; using System.Linq; @@ -850,8 +850,8 @@ WHERE (exists(SELECT 1 all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.Id as1, a.Clicks as2, a.TypeGuid as3, a.Title as4, a.CreateTime as5, (SELECT sum(b.Id) - FROM tb_topic22 b) as6 + Assert.Equal(@"SELECT a.Id as1, a.Clicks as2, a.TypeGuid as3, a.Title as4, a.CreateTime as5, nvl((SELECT sum(b.Id) + FROM tb_topic22 b), 0) as6 FROM tb_topic22 a", subquery); var subqueryList = select.ToList(a => new { @@ -867,8 +867,8 @@ FROM tb_topic22 a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.Id as1, a.Clicks as2, a.TypeGuid as3, a.Title as4, a.CreateTime as5, (SELECT min(b.Id) - FROM tb_topic22 b) as6 + Assert.Equal(@"SELECT a.Id as1, a.Clicks as2, a.TypeGuid as3, a.Title as4, a.CreateTime as5, nvl((SELECT min(b.Id) + FROM tb_topic22 b), 0) as6 FROM tb_topic22 a", subquery); var subqueryList = select.ToList(a => new { @@ -884,8 +884,8 @@ FROM tb_topic22 a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.Id as1, a.Clicks as2, a.TypeGuid as3, a.Title as4, a.CreateTime as5, (SELECT max(b.Id) - FROM tb_topic22 b) as6 + Assert.Equal(@"SELECT a.Id as1, a.Clicks as2, a.TypeGuid as3, a.Title as4, a.CreateTime as5, nvl((SELECT max(b.Id) + FROM tb_topic22 b), 0) as6 FROM tb_topic22 a", subquery); var subqueryList = select.ToList(a => new { @@ -901,8 +901,8 @@ FROM tb_topic22 a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.Id as1, a.Clicks as2, a.TypeGuid as3, a.Title as4, a.CreateTime as5, (SELECT avg(b.Id) - FROM tb_topic22 b) as6 + Assert.Equal(@"SELECT a.Id as1, a.Clicks as2, a.TypeGuid as3, a.Title as4, a.CreateTime as5, nvl((SELECT avg(b.Id) + FROM tb_topic22 b), 0) as6 FROM tb_topic22 a", subquery); var subqueryList = select.ToList(a => new { diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlSelectTest.cs index c499d3ba..78454478 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/Curd/MySqlSelectTest.cs @@ -1070,8 +1070,8 @@ limit 0,10", t1); all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT sum(b.`Id`) - FROM `tb_topic` b) as6 + Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT sum(b.`Id`) + FROM `tb_topic` b), 0) as6 FROM `tb_topic` a", subquery); var subqueryList = select.ToList(a => new { @@ -1087,8 +1087,8 @@ FROM `tb_topic` a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT min(b.`Id`) - FROM `tb_topic` b) as6 + Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT min(b.`Id`) + FROM `tb_topic` b), 0) as6 FROM `tb_topic` a", subquery); var subqueryList = select.ToList(a => new { @@ -1104,8 +1104,8 @@ FROM `tb_topic` a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT max(b.`Id`) - FROM `tb_topic` b) as6 + Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT max(b.`Id`) + FROM `tb_topic` b), 0) as6 FROM `tb_topic` a", subquery); var subqueryList = select.ToList(a => new { @@ -1121,8 +1121,8 @@ FROM `tb_topic` a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT avg(b.`Id`) - FROM `tb_topic` b) as6 + Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT avg(b.`Id`) + FROM `tb_topic` b), 0) as6 FROM `tb_topic` a", subquery); var subqueryList = select.ToList(a => new { diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/Curd/DamengSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/Curd/DamengSelectTest.cs index 9c9e6c52..5e7d29e5 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/Curd/DamengSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/Curd/DamengSelectTest.cs @@ -1,4 +1,4 @@ -using FreeSql.DataAnnotations; +using FreeSql.DataAnnotations; using System; using System.Collections.Generic; using System.Linq; @@ -864,8 +864,8 @@ ORDER BY dbms_random.value) t WHERE ROWNUM < 11", t1); all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT sum(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -881,8 +881,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT min(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -898,8 +898,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT max(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -915,8 +915,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT avg(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/Curd/OdbcSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/Curd/OdbcSelectTest.cs index e83eb917..5769d1ba 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/Curd/OdbcSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/Curd/OdbcSelectTest.cs @@ -1,4 +1,4 @@ -using FreeSql.DataAnnotations; +using FreeSql.DataAnnotations; using System; using System.Collections.Generic; using System.Linq; @@ -829,8 +829,8 @@ namespace FreeSql.Tests.Odbc.Default all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT sum(b.[Id]) - FROM [tb_topic22] b) as6 + Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT sum(b.[Id]) + FROM [tb_topic22] b), 0) as6 FROM [tb_topic22] a", subquery); var subqueryList = select.ToList(a => new { @@ -846,8 +846,8 @@ FROM [tb_topic22] a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT min(b.[Id]) - FROM [tb_topic22] b) as6 + Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT min(b.[Id]) + FROM [tb_topic22] b), 0) as6 FROM [tb_topic22] a", subquery); var subqueryList = select.ToList(a => new { @@ -863,8 +863,8 @@ FROM [tb_topic22] a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT max(b.[Id]) - FROM [tb_topic22] b) as6 + Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT max(b.[Id]) + FROM [tb_topic22] b), 0) as6 FROM [tb_topic22] a", subquery); var subqueryList = select.ToList(a => new { @@ -880,8 +880,8 @@ FROM [tb_topic22] a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT avg(b.[Id]) - FROM [tb_topic22] b) as6 + Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT avg(b.[Id]) + FROM [tb_topic22] b), 0) as6 FROM [tb_topic22] a", subquery); var subqueryList = select.ToList(a => new { diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/KingbaseES/Curd/KingbaseESSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/KingbaseES/Curd/KingbaseESSelectTest.cs index 1750d697..e0499fe2 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/KingbaseES/Curd/KingbaseESSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/KingbaseES/Curd/KingbaseESSelectTest.cs @@ -1,4 +1,4 @@ -using FreeSql.DataAnnotations; +using FreeSql.DataAnnotations; using System; using System.Collections.Generic; using System.Linq; @@ -830,8 +830,8 @@ limit 10", t1); all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT sum(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -847,8 +847,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT min(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -864,8 +864,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT max(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -881,8 +881,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT avg(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/Curd/MySqlSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/Curd/MySqlSelectTest.cs index 3e6cd9b9..443742d0 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/Curd/MySqlSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/Curd/MySqlSelectTest.cs @@ -1,4 +1,4 @@ -using FreeSql.DataAnnotations; +using FreeSql.DataAnnotations; using Newtonsoft.Json; using System; using System.Collections.Generic; @@ -950,8 +950,8 @@ limit 0,10", t1); all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT sum(b.`Id`) - FROM `tb_topic` b) as6 + Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT sum(b.`Id`) + FROM `tb_topic` b), 0) as6 FROM `tb_topic` a", subquery); var subqueryList = select.ToList(a => new { @@ -967,8 +967,8 @@ FROM `tb_topic` a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT min(b.`Id`) - FROM `tb_topic` b) as6 + Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT min(b.`Id`) + FROM `tb_topic` b), 0) as6 FROM `tb_topic` a", subquery); var subqueryList = select.ToList(a => new { @@ -984,8 +984,8 @@ FROM `tb_topic` a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT max(b.`Id`) - FROM `tb_topic` b) as6 + Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT max(b.`Id`) + FROM `tb_topic` b), 0) as6 FROM `tb_topic` a", subquery); var subqueryList = select.ToList(a => new { @@ -1001,8 +1001,8 @@ FROM `tb_topic` a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT avg(b.`Id`) - FROM `tb_topic` b) as6 + Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT avg(b.`Id`) + FROM `tb_topic` b), 0) as6 FROM `tb_topic` a", subquery); var subqueryList = select.ToList(a => new { diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/Curd/OracleSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/Curd/OracleSelectTest.cs index 75f2e3e3..e5dec223 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/Curd/OracleSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/Curd/OracleSelectTest.cs @@ -1,4 +1,4 @@ -using FreeSql.DataAnnotations; +using FreeSql.DataAnnotations; using System; using System.Collections.Generic; using System.Linq; @@ -865,8 +865,8 @@ ORDER BY dbms_random.value) t WHERE ROWNUM < 11", t1); all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT sum(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -882,8 +882,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT min(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -899,8 +899,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT max(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -916,13 +916,13 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT avg(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); - var subqueryList = select.ToList(a => new + var subqueryList = select.Limit(10).ToList(a => new { all = a, - count = select.As("b").Avg(b => b.Id) + count = select.As("b").Limit(10).Avg(b => b.Id) }); } [Fact] diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/Curd/PostgreSQLSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/Curd/PostgreSQLSelectTest.cs index a3c6b50c..85584f3b 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/Curd/PostgreSQLSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/Curd/PostgreSQLSelectTest.cs @@ -1,4 +1,4 @@ -using FreeSql.DataAnnotations; +using FreeSql.DataAnnotations; using System; using System.Collections.Generic; using System.Linq; @@ -926,8 +926,8 @@ limit 10", t1); all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT sum(b.""id"") - FROM ""tb_topic"" b) as6 + Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, coalesce((SELECT sum(b.""id"") + FROM ""tb_topic"" b), 0) as6 FROM ""tb_topic"" a", subquery); var subqueryList = select.ToList(a => new { @@ -943,8 +943,8 @@ FROM ""tb_topic"" a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT min(b.""id"") - FROM ""tb_topic"" b) as6 + Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, coalesce((SELECT min(b.""id"") + FROM ""tb_topic"" b), 0) as6 FROM ""tb_topic"" a", subquery); var subqueryList = select.ToList(a => new { @@ -960,8 +960,8 @@ FROM ""tb_topic"" a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT max(b.""id"") - FROM ""tb_topic"" b) as6 + Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, coalesce((SELECT max(b.""id"") + FROM ""tb_topic"" b), 0) as6 FROM ""tb_topic"" a", subquery); var subqueryList = select.ToList(a => new { @@ -977,8 +977,8 @@ FROM ""tb_topic"" a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT avg(b.""id"") - FROM ""tb_topic"" b) as6 + Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, coalesce((SELECT avg(b.""id"") + FROM ""tb_topic"" b), 0) as6 FROM ""tb_topic"" a", subquery); var subqueryList = select.ToList(a => new { diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/Curd/SqlServerSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/Curd/SqlServerSelectTest.cs index c539a808..157539af 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/Curd/SqlServerSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/Curd/SqlServerSelectTest.cs @@ -820,8 +820,8 @@ ORDER BY newid()", t1); all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT sum(b.[Id]) - FROM [tb_topic22] b) as6 + Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT sum(b.[Id]) + FROM [tb_topic22] b), 0) as6 FROM [tb_topic22] a", subquery); var subqueryList = select.ToList(a => new { @@ -837,8 +837,8 @@ FROM [tb_topic22] a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT min(b.[Id]) - FROM [tb_topic22] b) as6 + Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT min(b.[Id]) + FROM [tb_topic22] b), 0) as6 FROM [tb_topic22] a", subquery); var subqueryList = select.ToList(a => new { @@ -854,8 +854,8 @@ FROM [tb_topic22] a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT max(b.[Id]) - FROM [tb_topic22] b) as6 + Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT max(b.[Id]) + FROM [tb_topic22] b), 0) as6 FROM [tb_topic22] a", subquery); var subqueryList = select.ToList(a => new { @@ -871,8 +871,8 @@ FROM [tb_topic22] a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT avg(b.[Id]) - FROM [tb_topic22] b) as6 + Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT avg(b.[Id]) + FROM [tb_topic22] b), 0) as6 FROM [tb_topic22] a", subquery); var subqueryList = select.ToList(a => new { diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Sqlite.Data/Sqlite/Curd/SqliteSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Sqlite.Data/Sqlite/Curd/SqliteSelectTest.cs index 15ac7fcc..ad048023 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Sqlite.Data/Sqlite/Curd/SqliteSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Sqlite.Data/Sqlite/Curd/SqliteSelectTest.cs @@ -871,8 +871,8 @@ limit 0,10", t1); all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT sum(b.""Id"") - FROM ""tb_topic22"" b) as6 + Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, ifnull((SELECT sum(b.""Id"") + FROM ""tb_topic22"" b), 0) as6 FROM ""tb_topic22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -888,8 +888,8 @@ FROM ""tb_topic22"" a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT min(b.""Id"") - FROM ""tb_topic22"" b) as6 + Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, ifnull((SELECT min(b.""Id"") + FROM ""tb_topic22"" b), 0) as6 FROM ""tb_topic22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -905,8 +905,8 @@ FROM ""tb_topic22"" a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT max(b.""Id"") - FROM ""tb_topic22"" b) as6 + Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, ifnull((SELECT max(b.""Id"") + FROM ""tb_topic22"" b), 0) as6 FROM ""tb_topic22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -922,8 +922,8 @@ FROM ""tb_topic22"" a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT avg(b.""Id"") - FROM ""tb_topic22"" b) as6 + Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, ifnull((SELECT avg(b.""Id"") + FROM ""tb_topic22"" b), 0) as6 FROM ""tb_topic22"" a", subquery); var subqueryList = select.ToList(a => new { diff --git a/FreeSql.Tests/FreeSql.Tests/Dameng/Curd/DamengSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/Dameng/Curd/DamengSelectTest.cs index f384588e..af707310 100644 --- a/FreeSql.Tests/FreeSql.Tests/Dameng/Curd/DamengSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Dameng/Curd/DamengSelectTest.cs @@ -997,8 +997,8 @@ ORDER BY dbms_random.value) t WHERE ROWNUM < 11", t1); all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT sum(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -1014,8 +1014,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT min(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -1031,8 +1031,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT max(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -1048,8 +1048,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT avg(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { diff --git a/FreeSql.Tests/FreeSql.Tests/Firebird/Curd/FirebirdSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/Firebird/Curd/FirebirdSelectTest.cs index 63ca8372..c95cf88e 100644 --- a/FreeSql.Tests/FreeSql.Tests/Firebird/Curd/FirebirdSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Firebird/Curd/FirebirdSelectTest.cs @@ -980,8 +980,8 @@ ORDER BY rand()", t1); all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT sum(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -997,8 +997,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT min(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -1014,8 +1014,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT max(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -1031,8 +1031,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT avg(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { diff --git a/FreeSql.Tests/FreeSql.Tests/KingbaseES/Curd/KingbaseESSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/KingbaseES/Curd/KingbaseESSelectTest.cs index 58e797a0..04dfaf18 100644 --- a/FreeSql.Tests/FreeSql.Tests/KingbaseES/Curd/KingbaseESSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/KingbaseES/Curd/KingbaseESSelectTest.cs @@ -1,4 +1,4 @@ -using FreeSql.DataAnnotations; +using FreeSql.DataAnnotations; using System; using System.Collections.Generic; using System.Linq; @@ -830,9 +830,8 @@ limit 10", t1); all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"") - FROM ""TB_TOPIC22"" b - limit 1) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT sum(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -848,9 +847,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"") - FROM ""TB_TOPIC22"" b - limit 1) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT min(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -866,9 +864,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"") - FROM ""TB_TOPIC22"" b - limit 1) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT max(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -884,9 +881,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"") - FROM ""TB_TOPIC22"" b - limit 1) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT avg(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { diff --git a/FreeSql.Tests/FreeSql.Tests/MsAccess/Curd/MsAccessSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/MsAccess/Curd/MsAccessSelectTest.cs index 3c54d207..123b965d 100644 --- a/FreeSql.Tests/FreeSql.Tests/MsAccess/Curd/MsAccessSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/MsAccess/Curd/MsAccessSelectTest.cs @@ -945,8 +945,9 @@ WHERE (((a.[Name]) in (SELECT s.[Title] as as1 all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, (SELECT sum(b.[Id]) - FROM [tb_topic22] b) as as6 + Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, iif(isnull((SELECT sum(b.[Id]) + FROM [tb_topic22] b)), 0, (SELECT sum(b.[Id]) + FROM [tb_topic22] b)) as as6 FROM [tb_topic22] a", subquery); var subqueryList = select.ToList(a => new { @@ -962,8 +963,9 @@ FROM [tb_topic22] a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, (SELECT min(b.[Id]) - FROM [tb_topic22] b) as as6 + Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, iif(isnull((SELECT min(b.[Id]) + FROM [tb_topic22] b)), 0, (SELECT min(b.[Id]) + FROM [tb_topic22] b)) as as6 FROM [tb_topic22] a", subquery); var subqueryList = select.ToList(a => new { @@ -979,8 +981,9 @@ FROM [tb_topic22] a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, (SELECT max(b.[Id]) - FROM [tb_topic22] b) as as6 + Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, iif(isnull((SELECT max(b.[Id]) + FROM [tb_topic22] b)), 0, (SELECT max(b.[Id]) + FROM [tb_topic22] b)) as as6 FROM [tb_topic22] a", subquery); var subqueryList = select.ToList(a => new { @@ -996,8 +999,9 @@ FROM [tb_topic22] a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, (SELECT avg(b.[Id]) - FROM [tb_topic22] b) as as6 + Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, iif(isnull((SELECT avg(b.[Id]) + FROM [tb_topic22] b)), 0, (SELECT avg(b.[Id]) + FROM [tb_topic22] b)) as as6 FROM [tb_topic22] a", subquery); var subqueryList = select.ToList(a => new { diff --git a/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlSelectTest.cs index b5443e37..d7887030 100644 --- a/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/MySql/Curd/MySqlSelectTest.cs @@ -1133,8 +1133,8 @@ limit 0,10", t1); all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT sum(b.`Id`) - FROM `tb_topic` b) as6 + Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT sum(b.`Id`) + FROM `tb_topic` b), 0) as6 FROM `tb_topic` a", subquery); var subqueryList = select.ToList(a => new { @@ -1150,8 +1150,8 @@ FROM `tb_topic` a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT min(b.`Id`) - FROM `tb_topic` b) as6 + Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT min(b.`Id`) + FROM `tb_topic` b), 0) as6 FROM `tb_topic` a", subquery); var subqueryList = select.ToList(a => new { @@ -1167,8 +1167,8 @@ FROM `tb_topic` a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT max(b.`Id`) - FROM `tb_topic` b) as6 + Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT max(b.`Id`) + FROM `tb_topic` b), 0) as6 FROM `tb_topic` a", subquery); var subqueryList = select.ToList(a => new { @@ -1184,8 +1184,8 @@ FROM `tb_topic` a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT avg(b.`Id`) - FROM `tb_topic` b) as6 + Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT avg(b.`Id`) + FROM `tb_topic` b), 0) as6 FROM `tb_topic` a", subquery); var subqueryList = select.ToList(a => new { diff --git a/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleSelectTest.cs index 6169e7b6..279e38fd 100644 --- a/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Oracle/Curd/OracleSelectTest.cs @@ -984,8 +984,8 @@ ORDER BY dbms_random.value) t WHERE ROWNUM < 11", t1); all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT sum(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -1001,8 +1001,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT min(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -1018,8 +1018,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT max(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -1035,8 +1035,8 @@ FROM ""TB_TOPIC22"" a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"") - FROM ""TB_TOPIC22"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT avg(b.""ID"") + FROM ""TB_TOPIC22"" b), 0) as6 FROM ""TB_TOPIC22"" a", subquery); var subqueryList = select.Limit(10).ToList(a => new { diff --git a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLSelectTest.cs index 341fe856..18d8208a 100644 --- a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/Curd/PostgreSQLSelectTest.cs @@ -1074,8 +1074,8 @@ limit 10", t1); all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT sum(b.""id"") - FROM ""tb_topic"" b) as6 + Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, coalesce((SELECT sum(b.""id"") + FROM ""tb_topic"" b), 0) as6 FROM ""tb_topic"" a", subquery); var subqueryList = select.ToList(a => new { @@ -1091,8 +1091,8 @@ FROM ""tb_topic"" a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT min(b.""id"") - FROM ""tb_topic"" b) as6 + Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, coalesce((SELECT min(b.""id"") + FROM ""tb_topic"" b), 0) as6 FROM ""tb_topic"" a", subquery); var subqueryList = select.ToList(a => new { @@ -1108,8 +1108,8 @@ FROM ""tb_topic"" a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT max(b.""id"") - FROM ""tb_topic"" b) as6 + Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, coalesce((SELECT max(b.""id"") + FROM ""tb_topic"" b), 0) as6 FROM ""tb_topic"" a", subquery); var subqueryList = select.ToList(a => new { @@ -1125,8 +1125,8 @@ FROM ""tb_topic"" a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT avg(b.""id"") - FROM ""tb_topic"" b) as6 + Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, coalesce((SELECT avg(b.""id"") + FROM ""tb_topic"" b), 0) as6 FROM ""tb_topic"" a", subquery); var subqueryList = select.ToList(a => new { diff --git a/FreeSql.Tests/FreeSql.Tests/ShenTong/Curd/ShenTongSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/ShenTong/Curd/ShenTongSelectTest.cs index c199031a..fe432b60 100644 --- a/FreeSql.Tests/FreeSql.Tests/ShenTong/Curd/ShenTongSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/ShenTong/Curd/ShenTongSelectTest.cs @@ -1,4 +1,4 @@ -using FreeSql.DataAnnotations; +using FreeSql.DataAnnotations; using System; using System.Collections.Generic; using System.Linq; @@ -944,8 +944,8 @@ limit 10", t1); all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"") - FROM ""TB_TOPIC"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT sum(b.""ID"") + FROM ""TB_TOPIC"" b), 0) as6 FROM ""TB_TOPIC"" a", subquery); var subqueryList = select.ToList(a => new { @@ -961,8 +961,8 @@ FROM ""TB_TOPIC"" a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"") - FROM ""TB_TOPIC"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT min(b.""ID"") + FROM ""TB_TOPIC"" b), 0) as6 FROM ""TB_TOPIC"" a", subquery); var subqueryList = select.ToList(a => new { @@ -978,8 +978,8 @@ FROM ""TB_TOPIC"" a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"") - FROM ""TB_TOPIC"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT max(b.""ID"") + FROM ""TB_TOPIC"" b), 0) as6 FROM ""TB_TOPIC"" a", subquery); var subqueryList = select.ToList(a => new { @@ -995,8 +995,8 @@ FROM ""TB_TOPIC"" a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"") - FROM ""TB_TOPIC"" b) as6 + Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT avg(b.""ID"") + FROM ""TB_TOPIC"" b), 0) as6 FROM ""TB_TOPIC"" a", subquery); var subqueryList = select.ToList(a => new { diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs index cbe5c814..1928d412 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs @@ -981,8 +981,8 @@ ORDER BY newid()", t1); all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT sum(b.[Id]) - FROM [tb_topic22] b) as6 + Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT sum(b.[Id]) + FROM [tb_topic22] b), 0) as6 FROM [tb_topic22] a", subquery); var subqueryList = select.ToList(a => new { @@ -998,8 +998,8 @@ FROM [tb_topic22] a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT min(b.[Id]) - FROM [tb_topic22] b) as6 + Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT min(b.[Id]) + FROM [tb_topic22] b), 0) as6 FROM [tb_topic22] a", subquery); var subqueryList = select.ToList(a => new { @@ -1015,8 +1015,8 @@ FROM [tb_topic22] a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT max(b.[Id]) - FROM [tb_topic22] b) as6 + Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT max(b.[Id]) + FROM [tb_topic22] b), 0) as6 FROM [tb_topic22] a", subquery); var subqueryList = select.ToList(a => new { @@ -1032,8 +1032,8 @@ FROM [tb_topic22] a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT avg(b.[Id]) - FROM [tb_topic22] b) as6 + Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT avg(b.[Id]) + FROM [tb_topic22] b), 0) as6 FROM [tb_topic22] a", subquery); var subqueryList = select.ToList(a => new { diff --git a/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteSelectTest.cs index a9b3f59b..81f463e9 100644 --- a/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteSelectTest.cs @@ -1003,8 +1003,8 @@ limit 0,10", t1); all = a, count = (long)select.As("b").Sum(b => b.Id) }); - Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT sum(b.""Id"") - FROM ""tb_topic22"" b) as6 + Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, ifnull((SELECT sum(b.""Id"") + FROM ""tb_topic22"" b), 0) as6 FROM ""tb_topic22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -1020,8 +1020,8 @@ FROM ""tb_topic22"" a", subquery); all = a, count = select.As("b").Min(b => b.Id) }); - Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT min(b.""Id"") - FROM ""tb_topic22"" b) as6 + Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, ifnull((SELECT min(b.""Id"") + FROM ""tb_topic22"" b), 0) as6 FROM ""tb_topic22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -1037,8 +1037,8 @@ FROM ""tb_topic22"" a", subquery); all = a, count = select.As("b").Max(b => b.Id) }); - Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT max(b.""Id"") - FROM ""tb_topic22"" b) as6 + Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, ifnull((SELECT max(b.""Id"") + FROM ""tb_topic22"" b), 0) as6 FROM ""tb_topic22"" a", subquery); var subqueryList = select.ToList(a => new { @@ -1054,8 +1054,8 @@ FROM ""tb_topic22"" a", subquery); all = a, count = select.As("b").Avg(b => b.Id) }); - Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT avg(b.""Id"") - FROM ""tb_topic22"" b) as6 + Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, ifnull((SELECT avg(b.""Id"") + FROM ""tb_topic22"" b), 0) as6 FROM ""tb_topic22"" a", subquery); var subqueryList = select.ToList(a => new { diff --git a/FreeSql/Internal/CommonExpression.cs b/FreeSql/Internal/CommonExpression.cs index de8540d9..690cd66d 100644 --- a/FreeSql/Internal/CommonExpression.cs +++ b/FreeSql/Internal/CommonExpression.cs @@ -1264,7 +1264,7 @@ namespace FreeSql.Internal var sql4 = fsqlType.GetMethod("ToSql", new Type[] { typeof(string) })?.Invoke(fsql, new object[] { $"{exp3.Method.Name.ToLower()}({fieldSql})" })?.ToString(); asSelectBefores.Clear(); - return $"({sql4.Replace(" \r\n", " \r\n ")})"; + return _common.IsNull($"({sql4.Replace(" \r\n", " \r\n ")})", 0); } var sql3 = manySubSelectAggMethod.Invoke(fsql, new object[] { exp3Args0, FieldAliasOptions.AsProperty }) as string; @@ -1319,7 +1319,7 @@ namespace FreeSql.Internal exp3Args0 = new ReplaceHzyTupleToMultiParam().Modify(exp3Args0, fsqltables); var sqlSum = fsqlType.GetMethod("ToSql", new Type[] { typeof(string) })?.Invoke(fsql, new object[] { $"{exp3.Method.Name.ToLower()}({ExpressionLambdaToSql(exp3Args0, tscClone1)})" })?.ToString(); if (string.IsNullOrEmpty(sqlSum) == false) - return $"({sqlSum.Replace(" \r\n", " \r\n ")})"; + return _common.IsNull($"({sqlSum.Replace(" \r\n", " \r\n ")})", 0); break; case "ToList": case "ToOne": @@ -2124,7 +2124,7 @@ namespace FreeSql.Internal commonExp.ReadAnonymousField(select._tables, field, map, ref index, callExp.Arguments[1], null, null, null, null, false); var fieldSql = field.Length > 0 ? field.Remove(0, 2).ToString() : null; - e.Result = $"({select.ToSql($"{aggregateMethodName}({fieldSql})").Replace(" \r\n", " \r\n ")})"; + e.Result = commonExp._common.IsNull($"({select.ToSql($"{aggregateMethodName}({fieldSql})").Replace(" \r\n", " \r\n ")})", 0); return; } throw throwCallExp($"不支持 {callExp.Arguments.Count}个参数的方法");