From 6870f92735b675519ad02aac2f9aa3b28440494b Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Mon, 25 Jul 2022 22:25:50 +0800 Subject: [PATCH] v3.2.666-preview20220727 --- Directory.Build.props | 2 +- .../Curd/SqlServerSelectWithTempQueryTest.cs | 45 +++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index 10dae847..b4345c4b 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -9,7 +9,7 @@ - 3.2.666-preview20220726 + 3.2.666-preview20220727 diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectWithTempQueryTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectWithTempQueryTest.cs index 8e435295..6f67ca99 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectWithTempQueryTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectWithTempQueryTest.cs @@ -810,6 +810,51 @@ WHERE (a.[rownum] = 1) AND ((a.[Nickname] = N'name03' OR a.[Nickname] = N'name02 Assert.Equal(list11[1].rownum, 1); Assert.Equal(list11[1].Id, 0); Assert.Null(list11[1].remark); + + + var sql12 = fsql.Select() + .FromQuery(fsql.Select() + .Where(b => b.UserId > 0)) + .LeftJoin((a, b) => a.Id == b.UserId) + .Where((a, b) => a.Id > 0 && b.UserId > 0) + .GroupBy((a, b) => new { a.Nickname }) + .ToSql(g => new + { + g.Key, + sum1 = g.Sum(g.Value.Item1.Id), + sum2 = g.Sum(g.Value.Item2.UserId), + }); + var assertSql12 = @"SELECT a.[Nickname], sum(a.[Id]) as1, sum(b.[UserId]) as2 +FROM [TwoTablePartitionBy_User] a +LEFT JOIN ( + SELECT a.[UserId], a.[Remark] + FROM [TwoTablePartitionBy_UserExt] a + WHERE (a.[UserId] > 0)) b ON a.[Id] = b.[UserId] +WHERE (a.[Id] > 0 AND b.[UserId] > 0) +GROUP BY a.[Nickname]"; + Assert.Equal(sql12, assertSql12); + var list12 = fsql.Select() + .FromQuery(fsql.Select() + .Where(b => b.UserId > 0)) + .LeftJoin((a, b) => a.Id == b.UserId) + .Where((a, b) => a.Id > 0 && b.UserId > 0) + .GroupBy((a, b) => new { a.Nickname }) + .ToList(g => new + { + g.Key, + sum1 = g.Sum(g.Value.Item1.Id), + sum2 = g.Sum(g.Value.Item2.UserId), + }); + Assert.Equal(list12.Count, 3); + Assert.Equal("name01", list12[0].Key.Nickname); + Assert.Equal(6, list12[0].sum1); + Assert.Equal(6, list12[0].sum2); + Assert.Equal("name02", list12[1].Key.Nickname); + Assert.Equal(4, list12[1].sum1); + Assert.Equal(4, list12[1].sum2); + Assert.Equal("name03", list12[2].Key.Nickname); + Assert.Equal(11, list12[2].sum1); + Assert.Equal(11, list12[2].sum2); } class TwoTablePartitionBy_User {