iT邦幫忙

0

如何使用SQL語法,篩選變數年月,前一個月的資料?

XYZ 2019-02-20 10:25:041980 瀏覽
  • 分享至 

  • xImage

抱歉 不明確的描述,困擾大家了,再描述如下:

每年的第一個月跨年度前一個月(12月)的金額固定是0,要顥示申請單號,如下說明

1.user選擇 20180101~20180118的資料
正確的資料如下:
要顥示 201712月的專案編號,但金額是0(201712月的資料稱前期),要顥示20180101~20180118的專案編號、申請單號、金額 (201801月的資料稱本期)

2.user選擇 20190101~20190118的資料
正確的資料如下:
要顥示 201812月的專案編號,但金額是0(201812月的資料稱前期),要顥示20190101~20190118的專案編號、申請單號、金額 (201901月的資料稱本期)

3.user選擇 20190201~20190218的資料
正確的資料如下:
要顥示 20190101~20190131的專案編號要加總金額(201901月的資料稱前期),同時也要顥示20190201~20190218的專案編號、申請單號、金額 (201902月的資料稱本期)

4.user選擇 20190301~20190318的資料
正確的資料如下:
要顥示 20190201~20190228的專案編號要加總金額(201902月的資料稱前期),同時也要顥示20190301~20190318的專案編號、申請單號、金額 (201903月的資料稱本期)

*****
我下的指令如下:
select b.ID_PROJ as 專案編號, b.NO_APPLY_A as 申請單號,b.AM_APPLY as 本期金額
from PRJAPPLY a
left join PRJAPPLYA as b on a.NO_APPLY_A=b.NO_APPLY_A
left join PRJECTA as c on b.ID_PROJ=c.ID_PROJ

WHERE b.DT_EXEC >= '20180301' AND b.DT_EXEC <= '20180331' and b.ID_PROJ='10710600000001'
order by b.ID_PROJ

select b.ID_PROJ as 專案編號,sum(b.AM_APPLY) as 前期支出金額
from PRJAPPLY a
left join PRJAPPLYA as b on a.NO_APPLY_A=b.NO_APPLY_A
left join PRJECTA as c on b.ID_PROJ=c.ID_PROJ where b.DT_EXEC like '201802%' and b.ID_PROJ='10710600000001'
group by b.ID_PROJ

https://ithelp.ithome.com.tw/upload/images/20190221/20108157t4OTrVk1ed.png

正確結果如下:
https://ithelp.ithome.com.tw/upload/images/20190221/20108157TwkcSQJpyA.png

看更多先前的討論...收起先前的討論...
說真的,你的說明不分行也就算了。解釋說明也不清不楚。
講真的啦,我有很認真的看你的問題看了三次。但我還是不知道你要的東西是什麼。

原諒我無法意會了。
猜你是想要輸出不同樣資料結構?
if SUBSTRING('20190113',5,2) <> '01'
select sum( num ) from A group by SUBSTRING(_date,1,6)
else
select * from A where _date = '20190213'
slime iT邦大師 1 級 ‧ 2019-02-20 11:06:24 檢舉
1. 將使用者輸入的 YYYYMMDD 取出 YYYY-A , MM-A (substring)
2. 如果 MM-A 介於 '02' ~ '12' , 換算出 MM-B '01' ~ '11'
3. 由 YYYY-A 與 MM-B , 組合出 YYYYMM-B
4. 撈取 YYYY-A 與 MM-A 符合的資料(本月)
5. 如果有 YYYYMM-B , 再撈取 YYYYMM-B 符合的資料(上月)
6. 顯示 4 & 5
你是表達選擇當月資料,是顯示加總資料
但若非當月資料(含以前),就顯示一筆資料
對吧?
但你最好要有SQL明細列出表達,不然~我想大家很猜到你的意思..

假設使用者選擇20190218,就是加總2/1~2/18以及1/1~1/31
假設使用者選擇20190118,就是只顯示1/18的資料..
Zed_Yang iT邦新手 3 級 ‧ 2019-02-20 14:31:06 檢舉
假設使用者選擇 20190318 , 加總2月所有資料,以及3/1-3/18 ?
sam0407 iT邦大師 1 級 ‧ 2019-02-21 08:39:34 檢舉
需求說的太不明確了,根本無法理解~~
為什麼日期是20190213就出一/二個月的加總,而日期是20190113就只顯示資料不加總?
如果日期是20190313又該怎麼出資料?
找不出明確的規律性,程式要怎麼寫
XYZ iT邦新手 4 級 ‧ 2019-02-21 16:39:57 檢舉
很抱歉重新描述我的問題,謝謝大大們的回應。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答