小码问答,有问必答!

2020-03-10 11:52

如何一条SQL语句从数据库一个表中取出两行数据放到一行中?

2020-03-10 11:52 回答了这个问题

数据库中有个表,存放日期和当日余额,写出一条SQL语句,查询出一行记录,包含今天的余额,昨天的余额,今天和昨天的差额。

为了方便理解,直接上中文表名和列名了。

CREATE TABLE IF NOT EXISTS `记账` (
  `id` int NOT NULL AUTO_INCREMENT,
  `日期` timestamp NULL DEFAULT NULL,
  `余额` int DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

INSERT INTO `记账` (`id`, `日期`, `余额`) VALUES
(1, '2020-03-10 11:16:04', 150),
(2, '2020-03-09 11:16:11', 120),
(3, '2020-03-08 11:16:24', 130),
(4, '2020-03-07 11:16:34', 120);



SQL语句:

SELECT *,今日-昨日 AS 差额 FROM 
(
SELECT 
MAX(case when DATEDIFF(日期,NOW())=0 then 余额 ELSE 0 END) AS 今日,
MAX(case when DATEDIFF(日期,NOW())=-1 then 余额 ELSE 0 END) AS 昨日
 FROM 记账
 WHERE DATEDIFF(日期,NOW()) BETWEEN  -1 and 0
 )AS t


查询结果:

今日  昨日  差额

150  120   30

0条评论

我要评论