我有两个查询。从第一个查询中获取选定的年份和月份数据,从第二个查询中获取上一年的数据,即上一年的数据
查询1: SELECT sum(a.netamount) NETAMOUNT,e.CUSTOMERDESCRIPTOR,YEAR(BILLDATE) AS DATEYEAR, MONTH (BILLDATE) DATEMONTH FROM syncbill a,ecustomer e WHERE a.OUTLET=e.CUSTOMERIDENTIFIER and YEAR(BILLDATE) = '2018' AND MONTH(BILLDATE) = '09' group by outlet
查询2: SELECT sum(a.netamount) NETAMOUNT,e.CUSTOMERDESCRIPTOR,YEAR(BILLDATE) AS DATEYEAR, MONTH (BILLDATE) DATEMONTH FROM syncbill a,ecustomer e WHERE a.OUTLET=e.CUSTOMERIDENTIFIER and YEAR(BILLDATE) = '2018-1' AND MONTH(BILLDATE) = '09' group by outlet
我正在使用MySQL 5.5,并在Year-1中获取上一年的数据 如2018-1给出了2017。
除了查询1年中的年份为2018
和查询2年中的年份为2018-1 i.e 2017
之外,这两个查询之间的其他所有条件都是相同的。
所以我想同时加入两个查询,以便一次运行即可获取数据。
因为2017年没有数据,这就是为什么它显示为空白,但是我想显示为0。
我知道我可以通过join来做到这一点,但是经验很少。
答案 0 :(得分:0)
default:
CallSomeFunction();
如果要两行分开,则可以使用union all
UNION ALL总是同时返回两个行结果
您还可以按年份使用一个查询组
SELECT sum(a.netamount) NETAMOUNT
,e.CUSTOMERDESCRIPTOR
,YEAR(BILLDATE) AS DATEYEAR
, MONTH (BILLDATE) DATEMONTH
FROM syncbill a
INNER JOIN ecustomer e ON a.OUTLET=e.CUSTOMERIDENTIFIER
and YEAR(BILLDATE) = '2018' AND MONTH(BILLDATE) = '09'
group by outlet
UNION ALL
SELECT sum(a.netamount) NETAMOUNT
,e.CUSTOMERDESCRIPTOR,
YEAR(BILLDATE) AS DATEYEAR
, MONTH (BILLDATE) DATEMONTH
FROM syncbill a
INNER JOIN ecustomer e ON a.OUTLET=e.CUSTOMERIDENTIFIER
and YEAR(BILLDATE) = '2018-1' AND MONTH(BILLDATE) = '09'
group by outlet