Skip to content

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

@sukney

Description

@sukney

版本 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions