如何比较同一表中同一列中的数据

时间:2017-05-26 01:12:00

标签: mysql

我需要在同一张表的同一列中比较2017年和2016年之间的数据。

现在我使用2个查询:

第一次查询:

intent:#Intent;action=com.squareup.register.action.CHARGE;package=com.squareup;S.com.squareup.register.WEB_CALLBACK_URI=...;end

这是寻找netamt 2017

第二次查询:

  SELECT 
      SUM(a.netamt) AS netamt2017, b.store_name, c.budget
  FROM 
      site_sales a 
  JOIN 
      site_store b ON b.storenum = a.storenum 
  JOIN 
      site_kpimthslsbgt c ON b.storenum = c.storenum 
  WHERE 
      c.busidate = '2017-01' 
      AND a.busidate >= '2017-01-01' 
      AND a.busidate <= '2017-01-15'
  GROUP BY 
      a.storenum

这是为了寻找“Netamt 2016”。

我需要将这两个查询组合起来形成这个表:

Here is example for the output

1 个答案:

答案 0 :(得分:0)

只需使用sum(case when ... then ... else ... end)语法:

SELECT
    SUM(CASE WHEN a.busidate BETWEEN '2016-01-01' AND '2016-01-15' THEN a.netamt ELSE 0 END) as netamt2016,
    SUM(CASE WHEN a.busidate BETWEEN '2017-01-01' AND '2017-01-15' THEN a.netamt ELSE 0 END) as netamt2017,
    b.store_name,
    c.budget
FROM site_sales a JOIN site_store b ON b.storenum = a.storenum 
JOIN site_kpimthslsbgt c ON b.storenum = c.storenum 
WHERE c.busidate = '2017-01'
GROUP BY a.storenum

注意: 因为您使用了GROUP BYb.store_namec.budget没有汇总,所以这两列是毫无意义。