Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

自动分表求和生成了多个结构,没有把结果相加。 #1115

Closed
sukney opened this issue May 23, 2022 · 8 comments
Closed

自动分表求和生成了多个结构,没有把结果相加。 #1115

sukney opened this issue May 23, 2022 · 8 comments

Comments

@sukney
Copy link

sukney commented May 23, 2022

版本 3.2.650-preview20220515
oracle 11g 数据库
代码
var q = _workSaleRepository.Select
.From<GOODSDOC, BUSINESSDOC>((a, b, c) => a.LeftJoin(z => z.GOODSID == b.GOODSID && z.ENTID == b.ENTID)
.LeftJoin(z => z.CLIENTID == c.BusinessId && z.ENTID == c.EntId))
.Where((x, a, b) => x.DATETIME >= beg && x.DATETIME < end)
.ToAggregate((x, b, c) => new
{
total = x.Count(),
totalNum = x.Sum(x.Key.NUM),
totalAmount = x.Sum(x.Key.TAXAMOUNT),
});
生成的语句如下

SELECT * from (SELECT count(1) as1, sum(a."NUM") as2, sum(a."TAXAMOUNT") as3
FROM "WORK_SA_202106" a
LEFT JOIN "VIW_GOODSDOC" b ON a."GOODSID" = b."GOODSID" AND a."ENTID" = b."ENTID"
LEFT JOIN "VIW_BUSINESSDOC" c ON a."CLIENTID" = c."BUSINESSID" AND a."ENTID" = c."ENTID"
WHERE (a."DATETIME" >= to_timestamp('2021-03-01 00:00:00.000000','YYYY-MM-DD HH24:MI:SS.FF6') AND a."DATETIME" < to_timestamp('2021-06-06 00:00:00.000000','YYYY-MM-DD HH24:MI:SS.FF6'))) ftb

UNION ALL

SELECT * from (SELECT count(1) as1, sum(a."NUM") as2, sum(a."TAXAMOUNT") as3
FROM "WORK_SA_202105" a
LEFT JOIN "VIW_GOODSDOC" b ON a."GOODSID" = b."GOODSID" AND a."ENTID" = b."ENTID"
LEFT JOIN "VIW_BUSINESSDOC" c ON a."CLIENTID" = c."BUSINESSID" AND a."ENTID" = c."ENTID"
WHERE (a."DATETIME" >= to_timestamp('2021-03-01 00:00:00.000000','YYYY-MM-DD HH24:MI:SS.FF6') AND a."DATETIME" < to_timestamp('2021-06-06 00:00:00.000000','YYYY-MM-DD HH24:MI:SS.FF6'))) ftb

UNION ALL

SELECT * from (SELECT count(1) as1, sum(a."NUM") as2, sum(a."TAXAMOUNT") as3
FROM "WORK_SA_202104" a
LEFT JOIN "VIW_GOODSDOC" b ON a."GOODSID" = b."GOODSID" AND a."ENTID" = b."ENTID"
LEFT JOIN "VIW_BUSINESSDOC" c ON a."CLIENTID" = c."BUSINESSID" AND a."ENTID" = c."ENTID"
WHERE (a."DATETIME" >= to_timestamp('2021-03-01 00:00:00.000000','YYYY-MM-DD HH24:MI:SS.FF6') AND a."DATETIME" < to_timestamp('2021-06-06 00:00:00.000000','YYYY-MM-DD HH24:MI:SS.FF6'))) ftb

UNION ALL

SELECT * from (SELECT count(1) as1, sum(a."NUM") as2, sum(a."TAXAMOUNT") as3
FROM "WORK_SA_202103" a
LEFT JOIN "VIW_GOODSDOC" b ON a."GOODSID" = b."GOODSID" AND a."ENTID" = b."ENTID"
LEFT JOIN "VIW_BUSINESSDOC" c ON a."CLIENTID" = c."BUSINESSID" AND a."ENTID" = c."ENTID"
WHERE (a."DATETIME" >= to_timestamp('2021-03-01 00:00:00.000000','YYYY-MM-DD HH24:MI:SS.FF6') AND a."DATETIME" < to_timestamp('2021-06-06 00:00:00.000000','YYYY-MM-DD HH24:MI:SS.FF6'))) ftb
下图是plsql语句的结果,变成了四条记录
image

@2881099
Copy link
Collaborator

2881099 commented May 23, 2022

目前自动分表,多表查询,聚合查询是测试盲区。

主要针对单表,特定的查询有效。

@sukney
Copy link
Author

sukney commented May 24, 2022

这个有没好的办法解决下

@2881099
Copy link
Collaborator

2881099 commented May 24, 2022

我尝试解决一下,有结果了回复

@2881099
Copy link
Collaborator

2881099 commented May 24, 2022

ToAggregate 新版本会翻译成这样执行:

SELECT  sum(ftba."click") as1, count(1) as2, avg(ftba."click") as3, min(ftba."click") as4, max(ftba."click") as5 FROM ( 
    SELECT  * from (SELECT a."click" 
    FROM "as_table_log_202204" a 
    WHERE (a."createtime" < '2022-05-01 00:00:00')) ftb
     
    UNION ALL
     
    SELECT  * from (SELECT a."click" 
    FROM "as_table_log_202203" a 
    WHERE (a."createtime" < '2022-05-01 00:00:00')) ftb
     
    UNION ALL
     
    SELECT  * from (SELECT a."click" 
    FROM "as_table_log_202202" a 
    WHERE (a."createtime" < '2022-05-01 00:00:00')) ftb
     
    UNION ALL
     
    SELECT  * from (SELECT a."click" 
    FROM "as_table_log_202201" a 
    WHERE (a."createtime" < '2022-05-01 00:00:00')) ftb
) ftba

@sukney
Copy link
Author

sukney commented May 24, 2022

帮发个版本,谢谢

2881099 added a commit that referenced this issue May 24, 2022
@2881099
Copy link
Collaborator

2881099 commented May 24, 2022

v3.2.650-preview20220526

@sukney
Copy link
Author

sukney commented May 24, 2022

nuget 搜不到 v3.2.650-preview20220526 版本。

@2881099
Copy link
Collaborator

2881099 commented May 24, 2022

nuget 搜不到 v3.2.650-preview20220526 版本。

nuget 抽风,两个多小时还没成功,发布了v3.2.651

@2881099 2881099 closed this as completed Oct 2, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants