iT邦幫忙

0

SQL語法多表串連後的CaseWhen判斷

SQL語法串連了非常多張表格
目前有問題的剩下這兩個產生欄位問題
主Table A
Table b(匯率表,會有多個幣別)可以理解為台灣牌價網站每天都會有匯率公告
匯率表會有查詢下限日期 EX:0770101(民國77年1月1號)

情境1:找匯率(多條件判斷)。Table A有個基準日跟Table b比對
EX:Atdate = 1100107, Btdate(許多日的匯率日期)

(情境1-1)Case When A.Atdate = b.Btdate
Then b.Rate(當天匯率)
(情境1-2)Case When A.Atdate < b.查詢下限日期
Then 下限日期的匯率
(情境1-3)Case When A.Atdate <> b.Btdate(找不到當日匹配也沒有符合下限日期)
Then 離基準日最近的那天
** 離基準日最近的那天
EX: A.Atdate = 1100107 找不到 b.Btdate 1100107
也沒有達到下限日期0770101就找出離1100107最近的那天有匯率的
EX:1100105這天匯率

情境2:主Table A Table b(用戶主資料表)
(情境2-1)Case When A.ID = b.ID then aa
(情境2-2)Case When Count(b.ID) =1 and a.brthdy <> b.brthdy then 生日不對
情境2-2說明:b表的ID必須是1筆然後生日跟A表不對
(情境2-3)Case When Count(b.ID) >1 = b.ID <> A.ID then 重複帳號
情境2-3說明:在b表搜出來後,ID重複筆數且生日與A不符合

問題實在太過複雜 還請各位先進指導

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2021-08-26 22:23:55

先到db fiddle建立你的 Table A, Table B
並且建立個十來筆資料
再來描述你的問題

以我在這裡的觀察
只有說不清楚的需求
沒有寫不出來的 SQL

看更多先前的回應...收起先前的回應...

只有說不清楚的需求
沒有寫不出來的 SQL
~By 海綿寶寶

rogeryao iT邦超人 8 級 ‧ 2021-08-27 22:28:28 檢舉

我只看到...推理小說...
應該只有...柯南...能解決吧

完整版是
只有你說不清楚的需求
沒有一級屠豬士rogeryao寫不出來的SQL
/images/emoticon/emoticon12.gif

rogeryao iT邦超人 8 級 ‧ 2021-08-27 22:43:22 檢舉

我只是...插花...玩一下...

/images/emoticon/emoticon58.gif

我要發表回答

立即登入回答