[英]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.