mysql - 生成月份行并与数据左连接

标签 mysql sql

我的数据库中有这些数据

+--------------+------------+
| TRX_DATE     |  AMOUNT    |
+--------------+------------+
| 2012-12-01   |  100.00    |
| 2012-12-07   |  125.00    |
+--------------+------------+

我需要这些数据左连接“生成完整的月份行”像这样

+--------------+------------+-------------+
|   DATE       |  TRX_DATE  |   AMOUNT    |
+--------------+------------+-------------+
| 2012-12-01   | 2012-12-01 |   100.00    |
| 2012-12-02   |    NULL    |    NULL     |
....
| 2012-12-07   | 2012-12-07 |   125.00    |
....
+--------------+------------+-------------+

如何做到这一点,谢谢。

编辑:更澄清问题

最佳答案

我认为您所需要的只是一个月中两个日期之间的日期,然后您可以对其进行左连接。

DECLARE @startDate DATETIME   
DECLARE @endDate DATETIME

SET @startDate = '2012-12-01'
SET @endDate = '2011-12-31';

WITH dates(Date) AS 
(
    SELECT @startdate as Date
    UNION ALL
    SELECT DATEADD(d,1,[Date])
    FROM dates 
    WHERE DATE < @enddate
)

SELECT Date
FROM dates
LEFT JOIN yourtablename ON yourtablename.trx_date=dates.date 

see the SOURCE :- 该链接将向您展示一些实现此目的的好技术。

关于mysql - 生成月份行并与数据左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13894467/

相关文章:

sql - 无法将 Windows 计数器表中的字符转换为日期时间

mysql - "<>some"和 "not in"之间的区别

java - Log4J SQL 日志记录 TopLink

php - 向 MySQL 插入数据和从 MySQL 检索数据的安全方法

MySQL : reference a column from another column

php - 仅为一列插入不同的值

mysql - 如何读取mysql中插入触发器后创建的innodb行?

mysql - 无法创建 MySQL/MariaDB 存储过程

sql - 根据 SQL 查询自动发送电子邮件并安排时间

mysql - 在 mysql 中运行复杂查询