简体   繁体   中英

Show data of today and one week earlier in one row. Is it possible in mysql?

Table example

id  |   name    |   value   |   date
--------------------------------------------
1   |   abc     |   20      |   2018-01-26
1   |   abc     |   24      |   2018-01-27
1   |   abc     |   25      |   2018-01-28
1   |   abc     |   30      |   2018-01-29

I know how to fetch data from 28th Jan or today. But I need some way to show values of two dates in two columns. Is it possible in one mysql query?

Like this

name    |   value_today |   value_pre
---------------------------------------
abc     |   30          |   25

Here's a hypothetical query that would do it.

SELECT t1.value AS value_today,(SELECT t2.value FROM table AS t2 WHERE t2.date=2018-01-29 ) AS value_pre 
FROM table AS t1 WHERE t1.date=2018-01-28

You can achieve this using the case . This query returns the today's value and previous date value:

SELECT 
id, name, 
 Sum(Case When date = CURDATE()
         Then value Else 0 End) TodaySum,
 Sum(Case When (date = CURDATE()-1)
         Then value Else 0 End) PreviousSum
FROM tbl1
group by id, name

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM