簡體   English   中英

如何通過在每次更新中插入另一行來獲取SQL中尚未更新的月份?

[英]How can I get the month that is not yet updated in SQL by inserting another row on every update?

我有一個表,其中包含需要每月更新的不同事務的記錄。 成功更新了特定月份的記錄后,它將在該表中插入一條新記錄以指示該記錄已被更新。 讓我們來看這個例子。

**date_of_transaction**   **type**   
2015-04-21              1 //A deposit record
2015-04-24              2 //A withdrawal record
2015-04-29              1
2015-04-30              2
2015-04-30              3 //3, means an update record
2015-05-14              1
2015-05-22              1
2015-05-27              2
2015-05-30              2
2015-06-09              1
2015-06-12              2
2015-06-17              2
2015-06-19              2

假設今天是2015年7月23日,我只能獲得比當前月份低一個月的數據,因此,我只能獲得六月和向下的記錄。

如您所見,由於type屬性中的值為“ 3”,因此在4月進行了一次更新,但是在5月和6月沒有發生任何更新,我如何獲取不存在的月份尚未更新?

我的方法是先查找所有月份,然后查找記錄已更新的月份。 然后,從所有未更新記錄的月份中僅選擇那些月份(A減去操作)。

MySQL查詢將是這樣的

從your_table_name中選擇extract(MONTH,data_of_transaction),月份不在其中(從type = 3的表中選擇extract(MONTH,data_of_transaction));

這將返回您幾個月,沒有type = 3行

SELECT MONTH([trans-date]) FROM [table] GROUP BY MONTH([trans-date]) HAVING MAX([trans-type])<3

注意:如果列中的3不是最大值,這將不起作用

您可以嘗試一下;

select * 
from tbl
where date_of_transaction < 'July 23, 2015'
and
date_format(date_of_transaction, '%M-%Y') in (
    select 
        date_format(date_of_transaction, '%M-%Y')
    from tbl
    group by date_format(date_of_transaction, '%M-%Y')
    having max(type) != 3
)

date_format(date_of_transaction, '%M-%Y')將考慮month-year ,並過濾type = 3的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM