首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL汇总问题

MySQL汇总问题
EN

Stack Overflow用户
提问于 2019-03-28 19:35:21
回答 1查看 21关注 0票数 0

我的客户有一个现有的Dot Net软件,我正在将其移植到PHP中。我将在这份报告之后做一份报告

以下查询确实有效,但问题是有关分支合计、单位合计、发货合计、面积合计、区域合计和总计的汇总

代码语言:javascript
复制
select sh.NAME ShipName,sh.AREA_ID, pu.NAME PostingName, b.BRANCH_NAME Branch, r.RANK_NAME Rank, p.Name Part, count(SAILORID)Borne,

(SELECT SUM(us.SanctionNo)sanction FROM unitwisesanction us WHERE us.RankID = s.RANKID AND us.PostingUnitID = s.POSTINGUNITID
AND us.PartIIID = s.FIRSTPARTID GROUP BY us.PostingUnitID,us.RankID,us.PartIIID) sanction,

(select count(t.TransferID)TotalOut from transfer t left join sailor ts on t.SailorID = ts.SAILORID where ts.RANKID = s.RANKID
and ts.FIRSTPARTID = s.FIRSTPARTID and t.PostingUnitID = s.POSTINGUNITID )TotalIn,

(select count(t.TransferID)TotalOut from transfer t left join sailor ts on t.SailorID = ts.SAILORID where ts.RANKID = s.RANKID
and ts.FIRSTPARTID = s.FIRSTPARTID and ts.POSTINGUNITID = s.POSTINGUNITID )TotalOut

from sailor s
left join bn_branch b on s.BRANCHID = b.BRANCH_ID
left join bn_rank r on s.RANKID = r.RANK_ID
left join partii p on s.FIRSTPARTID = p.PartIIID
left join bn_daogroup a on b.DAO_GROUPID = a.GROUP_ID
left join bn_ship_establishment sh on s.SHIPESTABLISHMENTID = sh.SHIP_ESTABLISHMENTID
left join bn_posting_unit pu on s.POSTINGUNITID = pu.POSTING_UNITID
where SAILORSTATUS = 1  AND s.ZONEID IN (1) AND s.AREAID IN (5) AND s.SHIPESTABLISHMENTID IN (53,125)  AND a.GROUP_ID IN (1,2,3,4,5,7)
group by s.POSTINGUNITID, RANKID, FIRSTPARTID

有谁可以帮我?如何为所有合计生成额外的行

EN

回答 1

Stack Overflow用户

发布于 2019-03-28 21:28:07

我已经通过以下查询解决了这个问题

代码语言:javascript
复制
SELECT coalesce(ShipName, "Ship Total")ShipName, AREA_ID, coalesce(PostingName,"Unit Total")PostingName, coalesce(Branch, "Branch Total")Branch, Rank, Part,
      SUM(Borne) Borne, SUM(sanction) sanction, SUM(TotalIn) TotalIn, SUM(TotalOut) TotalOut
from(
  select s.POSTINGUNITID, RANKID, FIRSTPARTID, sh.NAME ShipName,sh.AREA_ID, pu.NAME PostingName, b.BRANCH_NAME Branch, r.RANK_NAME Rank, p.Name Part, count(SAILORID)Borne,

  (SELECT SUM(us.SanctionNo)sanction FROM unitwisesanction us WHERE us.RankID = s.RANKID AND us.PostingUnitID = s.POSTINGUNITID
  AND us.PartIIID = s.FIRSTPARTID GROUP BY us.PostingUnitID,us.RankID,us.PartIIID) sanction,

  (select count(t.TransferID)TotalOut from transfer t left join sailor ts on t.SailorID = ts.SAILORID where ts.RANKID = s.RANKID
  and ts.FIRSTPARTID = s.FIRSTPARTID and t.PostingUnitID = s.POSTINGUNITID )TotalIn,

  (select count(t.TransferID)TotalOut from transfer t left join sailor ts on t.SailorID = ts.SAILORID where ts.RANKID = s.RANKID
  and ts.FIRSTPARTID = s.FIRSTPARTID and ts.POSTINGUNITID = s.POSTINGUNITID )TotalOut

  from sailor s
  left join bn_branch b on s.BRANCHID = b.BRANCH_ID
  left join bn_rank r on s.RANKID = r.RANK_ID
  left join partii p on s.FIRSTPARTID = p.PartIIID
  left join bn_daogroup a on b.DAO_GROUPID = a.GROUP_ID
  left join bn_ship_establishment sh on s.SHIPESTABLISHMENTID = sh.SHIP_ESTABLISHMENTID
  left join bn_posting_unit pu on s.POSTINGUNITID = pu.POSTING_UNITID
  where SAILORSTATUS = 1  AND s.ZONEID IN (1) AND s.AREAID IN (5) AND s.SHIPESTABLISHMENTID IN (53,125)  AND a.GROUP_ID IN (1,2,3,4,5,7)
  group by s.POSTINGUNITID, RANKID, FIRSTPARTID
) a
GROUP BY ShipName, PostingName, Branch WITH ROLLUP;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55396611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档