这是我的 view_remit。我需要确定 month_paid
列中缺少的月份。
我使用此代码来获取此表,但我不知道如何确定丢失的月份。
SELECT RemitNo, PEN, Employer, month_paid, Total_PBR_Amt
FROM view_remit
JOIN (
SELECT 'JAN' as month_paid,'2016-01-01' as start,'2016-01-31' as end UNION ALL
SELECT 'FEB' as month_paid,'2016-02-01' as start,'2016-02-29' as end UNION ALL
SELECT 'MAR' as month_paid,'2016-03-01' as start,'2016-03-31' as end UNION ALL
SELECT 'APR' as month_paid,'2016-04-01' as start,'2016-04-30' as end UNION ALL
SELECT 'MAY' as month_paid,'2016-05-01' as start,'2016-05-31' as end UNION ALL
SELECT 'JUN' as month_paid,'2016-06-01' as start,'2016-06-30' as end UNION ALL
SELECT 'JUL' as month_paid,'2016-07-01' as start,'2016-07-31' as end UNION ALL
SELECT 'AUG' as month_paid,'2016-08-01' as start,'2016-08-31' as end UNION ALL
SELECT 'SEP' as month_paid,'2016-09-01' as start,'2016-09-30' as end UNION ALL
SELECT 'OCT' as month_paid,'2016-10-01' as start,'2016-10-31' as end UNION ALL
SELECT 'NOV' as month_paid,'2016-11-01' as start,'2016-11-30' as end UNION ALL
SELECT 'DEC' as month_paid,'2016-12-01' as start,'2016-12-31' as end
) M
ON view_remit.AP_From <= M.end
AND view_remit.AP_To >= M.start
ORDER BY PEN, AP_From
我需要得到这个输出。
|PEN|Employer|month|
| 1 | a | MAR |
| 1 | a | JUN |
| 1 | a | JUL |
| 1 | a | SEP |
| 1 | a | OCT |
| 1 | a | NOV |
非常感谢任何帮助。 预先感谢您。
最佳答案
由于我的声誉水平,我仍然无法发表评论。一旦您回答了我的问题,我将立即更正此答案:
您能否提供更完整的表格示例:缺少 AP_From 和 AP_To 列。
我不明白您如何将“笔”和“雇主”列与缺失的月份链接起来。 无论如何,要根据您表上可用的月份获取缺失的月份,我将按以下步骤操作:
-- Just for sample query purpose
IF OBJECT_ID('tempdb..#view_remit') is not null
DROP TABLE #view_remit
CREATE TABLE #view_remit (
RemitNo INT,
PEN INT,
Employer VARCHAR(10),
wmonth VARCHAR(3),
Total_PBR_Amt FLOAT,
AP_Date DATE
)
INSERT INTO #view_remit VALUES
(1,1,'a','JAN',200, '2016-01-20'),
(1,1,'a','FEV',200, '2016-02-12'),
(1,1,'a','APR',200, '2016-04-25'),
(1,1,'a','AUG',200, '2016-08-02'),
(1,1,'a','DEC',200, '2016-12-24')
-- Your working month table
IF OBJECT_ID('tempdb..#table_month') is not null
DROP TABLE #table_month
CREATE TABLE #table_month (
wmonth VARCHAR(3),
DateBegin DATE,
EndBegin DATE
)
INSERT INTO #table_month VALUES
('JAN', '2016-01-01', '2016-01-31'),
('FEV', '2016-02-01', '2016-02-29'),
('MAR', '2016-03-01', '2016-03-31'),
('APR', '2016-04-01', '2016-04-30'),
('MAI', '2016-05-01', '2016-05-31'),
('JUN', '2016-06-01', '2016-06-30'),
('JUL', '2016-07-01', '2016-07-31'),
('AUG', '2016-08-01', '2016-08-31'),
('SET', '2016-09-01', '2016-09-30'),
('OCT', '2016-10-01', '2016-10-31'),
('NOV', '2016-11-01', '2016-11-30'),
('DEC', '2016-12-01', '2016-12-31')
SELECT PEN, Employer, tm.wmonth
FROM #table_month tm
LEFT JOIN #view_remit vr
ON vr.wmonth = tm.wmonth
WHERE vr.wmonth is null
关于mysql - 如何找到mysql中某列中缺失的月份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41825756/