首页 > 解决方案 > MySQL 查询 - 12 个月的重复付款

问题描述

我有一个名为 PrePay 的付款数据库。客户一次性支付 12 个月。
我需要将单笔付款显示为 12 笔付款(12 条记录)。

这是我的查询:

SELECT account, startdate, servdef
FROM PAYHIST
WHERE account = 5543

startdate是一个日期字段

这显示了 3 年的 3 笔付款:

这显示了 3 年的 3 笔付款

我想在第一次付款后为每个帐户和 servdef 产生 11 笔付款。所以 06-22-2018 将有 11 条记录跟随它的几个月,即

在此处输入图像描述

你能告诉我如何制作这样的记录吗?

标签: mysql

解决方案


加入一个表,该表返回您要将每行扩展到的月数。

SELECT account, DATE_ADD(startdate, INTERVAL n MONTH) AS startdate, servdev
FROM PAYHIST
CROSS JOIN (
    SELECT 0 AS n
    UNION
    SELECT 1
    UNION
    SELECT 2
    ...
    UNION
    SELECT 11) AS q
WHERE account = 5543
ORDER BY startdate, n

推荐阅读