mysql在 union 与group by后order by排序混乱

统计的sql,排序后,查出的数据前半部分是对的,后部分顺序就乱了

select (case when sum(a.n0) is null then 0 else sum(a.n0) end) n0,
  (case when sum(a.n1) is null then 0 else sum(a.n1) end) n1,
  (case when sum(a.n2) is null then 0 else sum(a.n2) end) n2,
   a.yab003,
  (case when sum(a.n3) is null then 0 else sum(a.n3) end) n3,
  (case when sum(a.n4) is null then 0 else sum(a.n4) end) n4,
  (case when sum(a.n5) is null then 0 else sum(a.n5) end) n5,
  (case when sum(a.n6) is null then 0 else sum(a.n6) end) n6,
  (case when sum(a.ymoney) is null then 0.0 else sum(a.ymoney) end) ymoney,
  (case when sum(a.zmoney) is null then 0.0 else sum(a.zmoney) end)zmoney
    from (
  select
  count(*) as n0,0 n1,0
  n2,yab003,0 n3,0 n4,0 n5, 0
  n6,0 ymoney,0 zmoney from
  logistics.consignmentnew
  where
  TO_DAYS(NOW())-TO_DAYS(FROM_UNIXTIME(signtime)) <= 1 and
  issign='1'
  and
  effective='0' and yab003 in ('20001','20002','20026','20030','20031','20032','20033','20035','20038','20039','20046','20050','20052','20053','20055','20056','20057','20058','20059','20061','20062','20063','20064','20065','20066','20067','20069','20070','20071','20072','20073','20085','20086','20087','20088','20090','20148','20149','20150','20151','20152','20153','20155','20156','20157','20158','20159','20160','20161','20162','20163','20164','20165','20166','20167','20168','20169','20170','20171','20172','20173','20174','20175','20176','20177','20178','20179','20180','20181','20182','20183','20184','20185','20186','20187','20188','20189','20190','20191','20192','20193')
  group by yab003
  union all
  select 0 n0,count(*) as n1,0
  n2,yab003,0 n3,0 n4 ,0 n5, 0 n6,0 ymoney,0
  zmoney from
  logistics.consignmentnew
  where YEAR(now()) =
  YEAR(date(signtime)) and issign='1' and
  effective='0' and yab003 in
  ('20001','20002','20026','20030','20031','20032','20033','20035','20038','20039','20046','20050','20052','20053','20055','20056','20057','20058','20059','20061','20062','20063','20064','20065','20066','20067','20069','20070','20071','20072','20073','20085','20086','20087','20088','20090','20148','20149','20150','20151','20152','20153','20155','20156','20157','20158','20159','20160','20161','20162','20163','20164','20165','20166','20167','20168','20169','20170','20171','20172','20173','20174','20175','20176','20177','20178','20179','20180','20181','20182','20183','20184','20185','20186','20187','20188','20189','20190','20191','20192','20193')
  group by yab003
  union all
  select 0 n0,0 n1,count(*) as
  n2,yab003 ,0 n3,0
  n4 ,0 n5, 0 n6, 0 ymoney,0 zmoney from
  logistics.consignmentnew
  where YEAR(date_sub(now(), interval 1 YEAR)) =
  YEAR(date(signtime))
  and
  issign='1' and effective='0' and yab003 in
  ('20001','20002','20026','20030','20031','20032','20033','20035','20038','20039','20046','20050','20052','20053','20055','20056','20057','20058','20059','20061','20062','20063','20064','20065','20066','20067','20069','20070','20071','20072','20073','20085','20086','20087','20088','20090','20148','20149','20150','20151','20152','20153','20155','20156','20157','20158','20159','20160','20161','20162','20163','20164','20165','20166','20167','20168','20169','20170','20171','20172','20173','20174','20175','20176','20177','20178','20179','20180','20181','20182','20183','20184','20185','20186','20187','20188','20189','20190','20191','20192','20193')
  group by yab003
  union all
  select 0 n0,0 n1,0
  n2,yab003 ,0
  n3,count(*) as n4 ,0 n5, 0 n6,0 ymoney,0 zmoney from
  logistics.consignmentnew
  where 1=1 and YEAR(now()) =
  YEAR(date(signtime)) and issign='1' and
  effective='0' and MONTH(now())
  =
  MONTH(date(signtime)) and yab003 in ('20001','20002','20026','20030','20031','20032','20033','20035','20038','20039','20046','20050','20052','20053','20055','20056','20057','20058','20059','20061','20062','20063','20064','20065','20066','20067','20069','20070','20071','20072','20073','20085','20086','20087','20088','20090','20148','20149','20150','20151','20152','20153','20155','20156','20157','20158','20159','20160','20161','20162','20163','20164','20165','20166','20167','20168','20169','20170','20171','20172','20173','20174','20175','20176','20177','20178','20179','20180','20181','20182','20183','20184','20185','20186','20187','20188','20189','20190','20191','20192','20193')
  group by yab003
  union
  all
  select 0 n0,0 n1,0
  n2,yab003,count(*) as n3,0 n4,0 n5, 0 n6,0
  ymoney,0 zmoney from
  logistics.consignuser
  WHERE effective='0' and
  yab003 in ('20001','20002','20026','20030','20031','20032','20033','20035','20038','20039','20046','20050','20052','20053','20055','20056','20057','20058','20059','20061','20062','20063','20064','20065','20066','20067','20069','20070','20071','20072','20073','20085','20086','20087','20088','20090','20148','20149','20150','20151','20152','20153','20155','20156','20157','20158','20159','20160','20161','20162','20163','20164','20165','20166','20167','20168','20169','20170','20171','20172','20173','20174','20175','20176','20177','20178','20179','20180','20181','20182','20183','20184','20185','20186','20187','20188','20189','20190','20191','20192','20193')
  group by yab003
  union all
  select 0 n0,0 n1,0
  n2,yab003,0 n3,0 n4,count(*) as n5, 0 n6,0 ymoney,0 zmoney from
  logistics.consignuser
  WHERE effective='0' and YEAR(now()) =
  YEAR(date(createtime))
  and
  MONTH(now()) = MONTH(date(createtime)) and
  yab003 in ('20001','20002','20026','20030','20031','20032','20033','20035','20038','20039','20046','20050','20052','20053','20055','20056','20057','20058','20059','20061','20062','20063','20064','20065','20066','20067','20069','20070','20071','20072','20073','20085','20086','20087','20088','20090','20148','20149','20150','20151','20152','20153','20155','20156','20157','20158','20159','20160','20161','20162','20163','20164','20165','20166','20167','20168','20169','20170','20171','20172','20173','20174','20175','20176','20177','20178','20179','20180','20181','20182','20183','20184','20185','20186','20187','20188','20189','20190','20191','20192','20193')
  group by yab003
  union all
  select 0 n0,0 n1,0
  n2,yab003,0 n3,0 n4,0 n5,count(*) as n6, 0 ymoney,0 zmoney from
  logistics.consignuser
  WHERE effective='0' and YEAR(now()) =
  YEAR(date(createtime)) and yab003 in ('20001','20002','20026','20030','20031','20032','20033','20035','20038','20039','20046','20050','20052','20053','20055','20056','20057','20058','20059','20061','20062','20063','20064','20065','20066','20067','20069','20070','20071','20072','20073','20085','20086','20087','20088','20090','20148','20149','20150','20151','20152','20153','20155','20156','20157','20158','20159','20160','20161','20162','20163','20164','20165','20166','20167','20168','20169','20170','20171','20172','20173','20174','20175','20176','20177','20178','20179','20180','20181','20182','20183','20184','20185','20186','20187','20188','20189','20190','20191','20192','20193')
  group by yab003
  union
  all
  select 0 n0,0 n1,0 n2,yab003,0 n3,0 n4,0 n5,0 n6,(case when
  sum(money) is
  null then 0 else sum(money) end) as ymoney,0 zmoney from
  logistics.charge where 1=1 and YEAR(now()) = YEAR(date(time)) and
  inorout='0' and chargetype='0' and yab003 in ('20001','20002','20026','20030','20031','20032','20033','20035','20038','20039','20046','20050','20052','20053','20055','20056','20057','20058','20059','20061','20062','20063','20064','20065','20066','20067','20069','20070','20071','20072','20073','20085','20086','20087','20088','20090','20148','20149','20150','20151','20152','20153','20155','20156','20157','20158','20159','20160','20161','20162','20163','20164','20165','20166','20167','20168','20169','20170','20171','20172','20173','20174','20175','20176','20177','20178','20179','20180','20181','20182','20183','20184','20185','20186','20187','20188','20189','20190','20191','20192','20193')
  group by yab003
  union all
  select 0 n0,0 n1,0 n2,yab003,0 n3,0 n4,0 n5,0 n6,0
  ymoney,(case
  when sum(money) is null then 0 else sum(money) end) as
  zmoney from
  logistics.charge where YEAR(now()) = YEAR(date(time)) and
  inorout='0'
  and MONTH(now()) =MONTH(date(time)) and chargetype='0' and
  yab003 in  ('20001','20002','20026','20030','20031','20032','20033','20035','20038','20039','20046','20050','20052','20053','20055','20056','20057','20058','20059','20061','20062','20063','20064','20065','20066','20067','20069','20070','20071','20072','20073','20085','20086','20087','20088','20090','20148','20149','20150','20151','20152','20153','20155','20156','20157','20158','20159','20160','20161','20162','20163','20164','20165','20166','20167','20168','20169','20170','20171','20172','20173','20174','20175','20176','20177','20178','20179','20180','20181','20182','20183','20184','20185','20186','20187','20188','20189','20190','20191','20192','20193')
  group by yab003
  )a
  group by a.yab003
    ORDER BY a.n3 desc
 

在这里插入图片描述

修改之后,在外面又嵌套了一层,分页数据也对了

select * from(
(select (case when sum(a.n0) is null then 0 else sum(a.n0) end) n0,
  (case when sum(a.n1) is null then 0 else sum(a.n1) end) n1,
  (case when sum(a.n2) is null then 0 else sum(a.n2) end) n2,
   a.yab003,
  (case when sum(a.n3) is null then 0 else sum(a.n3) end) n3,
  (case when sum(a.n4) is null then 0 else sum(a.n4) end) n4,
  (case when sum(a.n5) is null then 0 else sum(a.n5) end) n5,
  (case when sum(a.n6) is null then 0 else sum(a.n6) end) n6,
  (case when sum(a.ymoney) is null then 0.0 else sum(a.ymoney) end) ymoney,
  (case when sum(a.zmoney) is null then 0.0 else sum(a.zmoney) end)zmoney
    from (
  select
  count(*) as n0,0 n1,0
  n2,yab003,0 n3,0 n4,0 n5, 0
  n6,0 ymoney,0 zmoney from
  logistics.consignmentnew
  where
  TO_DAYS(NOW())-TO_DAYS(FROM_UNIXTIME(signtime)) <= 1 and
  issign='1'
  and
  effective='0' and yab003 in ('20001','20002','20026','20030','20031','20032','20033','20035','20038','20039','20046','20050','20052','20053','20055','20056','20057','20058','20059','20061','20062','20063','20064','20065','20066','20067','20069','20070','20071','20072','20073','20085','20086','20087','20088','20090','20148','20149','20150','20151','20152','20153','20155','20156','20157','20158','20159','20160','20161','20162','20163','20164','20165','20166','20167','20168','20169','20170','20171','20172','20173','20174','20175','20176','20177','20178','20179','20180','20181','20182','20183','20184','20185','20186','20187','20188','20189','20190','20191','20192','20193')
  group by yab003
  union all
  select 0 n0,count(*) as n1,0
  n2,yab003,0 n3,0 n4 ,0 n5, 0 n6,0 ymoney,0
  zmoney from
  logistics.consignmentnew
  where YEAR(now()) =
  YEAR(date(signtime)) and issign='1' and
  effective='0' and yab003 in
  ('20001','20002','20026','20030','20031','20032','20033','20035','20038','20039','20046','20050','20052','20053','20055','20056','20057','20058','20059','20061','20062','20063','20064','20065','20066','20067','20069','20070','20071','20072','20073','20085','20086','20087','20088','20090','20148','20149','20150','20151','20152','20153','20155','20156','20157','20158','20159','20160','20161','20162','20163','20164','20165','20166','20167','20168','20169','20170','20171','20172','20173','20174','20175','20176','20177','20178','20179','20180','20181','20182','20183','20184','20185','20186','20187','20188','20189','20190','20191','20192','20193')
  group by yab003
  union all
  select 0 n0,0 n1,count(*) as
  n2,yab003 ,0 n3,0
  n4 ,0 n5, 0 n6, 0 ymoney,0 zmoney from
  logistics.consignmentnew
  where YEAR(date_sub(now(), interval 1 YEAR)) =
  YEAR(date(signtime))
  and
  issign='1' and effective='0' and yab003 in
  ('20001','20002','20026','20030','20031','20032','20033','20035','20038','20039','20046','20050','20052','20053','20055','20056','20057','20058','20059','20061','20062','20063','20064','20065','20066','20067','20069','20070','20071','20072','20073','20085','20086','20087','20088','20090','20148','20149','20150','20151','20152','20153','20155','20156','20157','20158','20159','20160','20161','20162','20163','20164','20165','20166','20167','20168','20169','20170','20171','20172','20173','20174','20175','20176','20177','20178','20179','20180','20181','20182','20183','20184','20185','20186','20187','20188','20189','20190','20191','20192','20193')
  group by yab003
  union all
  select 0 n0,0 n1,0
  n2,yab003 ,0
  n3,count(*) as n4 ,0 n5, 0 n6,0 ymoney,0 zmoney from
  logistics.consignmentnew
  where 1=1 and YEAR(now()) =
  YEAR(date(signtime)) and issign='1' and
  effective='0' and MONTH(now())
  =
  MONTH(date(signtime)) and yab003 in ('20001','20002','20026','20030','20031','20032','20033','20035','20038','20039','20046','20050','20052','20053','20055','20056','20057','20058','20059','20061','20062','20063','20064','20065','20066','20067','20069','20070','20071','20072','20073','20085','20086','20087','20088','20090','20148','20149','20150','20151','20152','20153','20155','20156','20157','20158','20159','20160','20161','20162','20163','20164','20165','20166','20167','20168','20169','20170','20171','20172','20173','20174','20175','20176','20177','20178','20179','20180','20181','20182','20183','20184','20185','20186','20187','20188','20189','20190','20191','20192','20193')
  group by yab003
  union
  all
  select 0 n0,0 n1,0
  n2,yab003,count(*) as n3,0 n4,0 n5, 0 n6,0
  ymoney,0 zmoney from
  logistics.consignuser
  WHERE effective='0' and
  yab003 in ('20001','20002','20026','20030','20031','20032','20033','20035','20038','20039','20046','20050','20052','20053','20055','20056','20057','20058','20059','20061','20062','20063','20064','20065','20066','20067','20069','20070','20071','20072','20073','20085','20086','20087','20088','20090','20148','20149','20150','20151','20152','20153','20155','20156','20157','20158','20159','20160','20161','20162','20163','20164','20165','20166','20167','20168','20169','20170','20171','20172','20173','20174','20175','20176','20177','20178','20179','20180','20181','20182','20183','20184','20185','20186','20187','20188','20189','20190','20191','20192','20193')
  group by yab003
  union all
  select 0 n0,0 n1,0
  n2,yab003,0 n3,0 n4,count(*) as n5, 0 n6,0 ymoney,0 zmoney from
  logistics.consignuser
  WHERE effective='0' and YEAR(now()) =
  YEAR(date(createtime))
  and
  MONTH(now()) = MONTH(date(createtime)) and
  yab003 in ('20001','20002','20026','20030','20031','20032','20033','20035','20038','20039','20046','20050','20052','20053','20055','20056','20057','20058','20059','20061','20062','20063','20064','20065','20066','20067','20069','20070','20071','20072','20073','20085','20086','20087','20088','20090','20148','20149','20150','20151','20152','20153','20155','20156','20157','20158','20159','20160','20161','20162','20163','20164','20165','20166','20167','20168','20169','20170','20171','20172','20173','20174','20175','20176','20177','20178','20179','20180','20181','20182','20183','20184','20185','20186','20187','20188','20189','20190','20191','20192','20193')
  group by yab003
  union all
  select 0 n0,0 n1,0
  n2,yab003,0 n3,0 n4,0 n5,count(*) as n6, 0 ymoney,0 zmoney from
  logistics.consignuser
  WHERE effective='0' and YEAR(now()) =
  YEAR(date(createtime)) and yab003 in ('20001','20002','20026','20030','20031','20032','20033','20035','20038','20039','20046','20050','20052','20053','20055','20056','20057','20058','20059','20061','20062','20063','20064','20065','20066','20067','20069','20070','20071','20072','20073','20085','20086','20087','20088','20090','20148','20149','20150','20151','20152','20153','20155','20156','20157','20158','20159','20160','20161','20162','20163','20164','20165','20166','20167','20168','20169','20170','20171','20172','20173','20174','20175','20176','20177','20178','20179','20180','20181','20182','20183','20184','20185','20186','20187','20188','20189','20190','20191','20192','20193')
  group by yab003
  union
  all
  select 0 n0,0 n1,0 n2,yab003,0 n3,0 n4,0 n5,0 n6,(case when
  sum(money) is
  null then 0 else sum(money) end) as ymoney,0 zmoney from
  logistics.charge where 1=1 and YEAR(now()) = YEAR(date(time)) and
  inorout='0' and chargetype='0' and yab003 in ('20001','20002','20026','20030','20031','20032','20033','20035','20038','20039','20046','20050','20052','20053','20055','20056','20057','20058','20059','20061','20062','20063','20064','20065','20066','20067','20069','20070','20071','20072','20073','20085','20086','20087','20088','20090','20148','20149','20150','20151','20152','20153','20155','20156','20157','20158','20159','20160','20161','20162','20163','20164','20165','20166','20167','20168','20169','20170','20171','20172','20173','20174','20175','20176','20177','20178','20179','20180','20181','20182','20183','20184','20185','20186','20187','20188','20189','20190','20191','20192','20193')
  group by yab003
  union all
  select 0 n0,0 n1,0 n2,yab003,0 n3,0 n4,0 n5,0 n6,0
  ymoney,(case
  when sum(money) is null then 0 else sum(money) end) as
  zmoney from
  logistics.charge where YEAR(now()) = YEAR(date(time)) and
  inorout='0'
  and MONTH(now()) =MONTH(date(time)) and chargetype='0' and
  yab003 in  ('20001','20002','20026','20030','20031','20032','20033','20035','20038','20039','20046','20050','20052','20053','20055','20056','20057','20058','20059','20061','20062','20063','20064','20065','20066','20067','20069','20070','20071','20072','20073','20085','20086','20087','20088','20090','20148','20149','20150','20151','20152','20153','20155','20156','20157','20158','20159','20160','20161','20162','20163','20164','20165','20166','20167','20168','20169','20170','20171','20172','20173','20174','20175','20176','20177','20178','20179','20180','20181','20182','20183','20184','20185','20186','20187','20188','20189','20190','20191','20192','20193')
  group by yab003
  )a
  group by a.yab003)
) b
    ORDER BY b.n2 desc

在这里插入图片描述

发布了6 篇原创文章 · 获赞 0 · 访问量 1941

猜你喜欢

转载自blog.csdn.net/qq_43482570/article/details/105595869
今日推荐