2017-05-22 70 views
1

我有一個包含以下記錄Mysql的獲得沒有處理前一個月的所有記錄在當月

slno | FirstName | LastName | Attended | Month | Year | 
-----|-----------|----------|----------|--------|------| 
1 | John  | Smith | 0  | 04 | 2017 | 
2 | Jack  | Paul | 1  | 04 | 2017 | 
3 | Jerry | Tom | 1  | 04 | 2017 | 
4 | Beth  | Home | 0  | 04 | 2017 | 
5 | Julia | John | 1  | 04 | 2017 | 
6 | Cris  | joy  | 0  | 05 | 2017 | 
7 | Meiy  | Rony | 1  | 05 | 2017 | 
8 | Ronald | Jony | 1  | 05 | 2017 | 
9 | Quest | Pio  | 0  | 05 | 2017 | 
10 | Mary  | June | 1  | 05 | 2017 | 
11 | Joy  | Meth | 0  | 03 | 2017 | 
12 | Ruby  | Rony | 1  | 03 | 2017 | 
13 | Royal | Jony | 1  | 03 | 2017 | 
14 | Tweet | Pio  | 0  | 03 | 2017 | 
15 | Min  | June | 1  | 03 | 2017 | 

我想說明根據年份和月份的數據表。 例如:04 2017應該只顯示4月份的月份數據和3月份出席的= 0。但是當我搜索2017年5月時,它應該顯示5月份的月份數據,其中包括以前的月份數據,即出席= 0 [3月和4月]。

我有以下語句:

select FirstName,LastName,Attended from UserTable 
where Attended in (0,1) 
and (Attended not in (1) or (Month='04' and Year='2017')); 

我會得到我想要的記錄。但是如果我搜索Month = '03'Year ='2017',則它會顯示從五月和四月開始的所有Attended = 0。

if Month='05' year='2017' -- current month 

    6 | Cris  | joy  | 0  | 05 | 2017 | 
    7 | Meiy  | Rony | 1  | 05 | 2017 | 
    8 | Ronald | Jony | 1  | 05 | 2017 | 
    9 | Quest | Pio  | 0  | 05 | 2017 | 
    10 | Mary  | June | 1  | 05 | 2017 | 
    1 | John  | Smith | 0  | 04 | 2017 | 
    4 | Beth  | Home | 0  | 04 | 2017 | 
    11 | Joy  | Meth | 0  | 03 | 2017 | 
    14 | Tweet | Pio  | 0  | 03 | 2017 | 

如果一個月= '04' 年= '2017年'

1 | John  | Smith | 0  | 04 | 2017 | 
2 | Jack  | Paul | 1  | 04 | 2017 | 
3 | Jerry | Tom | 1  | 04 | 2017 | 
4 | Beth  | Home | 0  | 04 | 2017 | 
5 | Julia | John | 1  | 04 | 2017 | 
11 | Joy  | Meth | 0  | 03 | 2017 | 
14 | Tweet | Pio  | 0  | 03 | 2017 | 

如果一個月= '03' 年= '2017年'

11 | Joy  | Meth | 0  | 03 | 2017 | 
12 | Ruby  | Rony | 1  | 03 | 2017 | 
13 | Royal | Jony | 1  | 03 | 2017 | 
14 | Tweet | Pio  | 0  | 03 | 2017 | 
15 | Min  | June | 1  | 03 | 2017 | 

我怎樣才能做到這一點?

+1

難道您發佈表架構,什麼是參加了,一個月的類型和年專欄? – lloiacono

+0

varchar是。像這樣的存儲過程調用:call getUserDetails('04','2017'); – RUPA

+1

使用其他信息而不是評論來編輯您的問題。你期望什麼輸出,特別是對於上個月的信息。 –

回答

1
SELECT * FROM your_table 
WHERE 
('05' = `Month` AND '2017' = `Year`) 
OR 
(
    '05-2017' >= DATE_FORMAT(STR_TO_DATE(CONCAT(`Mont`, '-', `Year`), '%m-%Y'), '%m-%Y') 
    AND 
    Attended = 0 
); 
2

你可以通過你的月份和年份解析爲日期做到這一點,然後查詢這個是這樣的:

SELECT * FROM your_table 
WHERE 
('05' = `Month` AND '2017' = `Year`) 
OR 
(
    '05-2017' >= DATE_FORMAT(STR_TO_DATE(CONCAT(`Mont`, '-', `Year`), '%m-%Y'), '%m-%Y') 
    AND 
    Attended = 0 
); 
+0

這將無法獲得當前月份的信息,其中Attended = 1或0 –

+0

@SloanThrasher更新了答案,解釋了該問題 – lloiacono

+1

Close, '''和'2017'=年''' –

相關問題