iT邦幫忙

0

關於一個T-SQL的問題

sql

請教各位先進關於T-SQL用法, 有二個TABLE如下:
A TABLE 欄位 MF001,MF002 (幣別,說明)
B TABLE 欄位 MG001,MG002,MG003 (幣別,生效日,匯率)
用這個只能顯示所有的幣別匯率
select A.MF001,B.MG002,B.MG003
from CMSMF A inner join CMSMG B on A.MF001=B.MG001
order by A.MF001, B.MG002 desc
請問如果只想知道每個幣別的最近生效日的匯率即可,該怎麼做?
(生效日每個幣別基準不同, 無法統一用生效日來做過濾條件)
例如:幣別有 EUR, JPY, RMB
匯率生效日, 各對應多筆資料, 只要抓最新的.

4
Albert
iT邦高手 1 級 ‧ 2014-03-03 16:23:40
最佳解答

ycl8000提到:
A TABLE 欄位 MF001,MF002 (幣別,說明)
B TABLE 欄位 MG001,MG002,MG003 (幣別,生效日,匯率)

跟你致敬 :: 自己開發很不簡單
WHERE
生效日 <= 今天
ORDER BY
生效日 DESC (最大的先)
只抓第一筆

答案出來了
可以參考我們的系統

-- Get Rate
DECLARE
CURSOR CUR_Rate IS
SELECT MultiplyRate
FROM C_Conversion_Rate
WHERE C_Currency_ID=v_CurrencyFrom AND C_Currency_ID_To=v_CurrencyTo
AND C_ConversionType_ID=v_ConversionType_ID
AND v_ConvDate BETWEEN ValidFrom AND ValidTo
AND AD_Client_ID IN (0,p_Client_ID) AND AD_Org_ID IN (0,p_Org_ID)
ORDER BY AD_Client_ID DESC, AD_Org_ID DESC, ValidFrom DESC;
BEGIN
FOR c IN CUR_Rate LOOP
v_Rate := c.MultiplyRate;
EXIT; -- only first
END LOOP;
END;
-- Not found
IF (v_Rate IS NULL) THEN
DBMS_OUTPUT.PUT_LINE('Conversion Rate Not Found');
RETURN NULL;
END IF;

Opensource ERP iDempiere 全球最多人使用的

iDempiere 台灣支持團隊
Albert
敬上

http://wiki.idempiere.org/zh/

看更多先前的回應...收起先前的回應...
Albert iT邦高手 1 級 ‧ 2014-03-03 16:26:47 檢舉

albertachen提到:
http://wiki.idempiere.org/zh/

歡迎 大家 指教 謝謝

賽門 iT邦超人 1 級 ‧ 2014-03-03 16:58:23 檢舉

albertachen提到:
iDempiere 台灣支持團隊

亂來,根本沒你這個團隊好不好?
不要往自已臉上貼金了!

總裁 iT邦好手 1 級 ‧ 2014-03-03 17:03:51 檢舉

台灣支持團隊

根據我對阿伯中文程度的了解,這句應該是動詞,表示阿伯支持台灣的團隊...暈

賽門 iT邦超人 1 級 ‧ 2014-03-03 17:20:13 檢舉

cdfu提到:
阿伯支持台灣的團隊.

感謝支持...
Open Source ERP社群籌備處 敬上....XD

Albert iT邦高手 1 級 ‧ 2014-03-03 18:03:49 檢舉

感謝大家支持 simon581923 Open Source ERP社群籌備處

謝謝大家支持 simon581923 感謝大家

Albert iT邦高手 1 級 ‧ 2014-03-03 18:05:04 檢舉

cdfu

謝謝 cdfu 謝謝大家支持 simon581923 感謝大家

鐵殼心 iT邦高手 1 級 ‧ 2014-03-04 09:10:41 檢舉

albertachen提到:
iDempiere 台灣支持團隊

simon581923提到:
亂來,根本沒你這個團隊

歷史上劉備團隊, 曹操團隊, 朱元璋團隊都是從一個人而開始壯大起來.
李白先生自己也搞了一個月亮和影子的三人團隊.
所以請賽大不要否定阿伯的iDempiere 台灣支持團隊, 因為團隊一定是從一個人開始.

haur5 iT邦研究生 4 級 ‧ 2014-03-04 13:42:04 檢舉

tecksin提到:
歷史上...

這點我同意,有些人的確是默默再創想的小種子,但推廣的人又說很爛,我就有點搞不清楚狀況了。
(莫非...朝代不同?搖頭)

賽門 iT邦超人 1 級 ‧ 2014-03-04 14:09:26 檢舉

tecksin提到:
歷史上劉備團隊, 曹操團隊, 朱元璋團隊都是從一個人而開始壯大起來.

我同意,但這些團隊的中心人物都是抱持遠大理想在推廣他們的理念,從而獲致眾人的支持。
但阿伯....嘿嘿嘿....自已都說不要用的....

鐵殼心 iT邦高手 1 級 ‧ 2014-03-04 15:33:36 檢舉

simon581923提到:
自已都說不要用的

犧牲自己照亮別人 阿伯大太偉大了灑花

賽門 iT邦超人 1 級 ‧ 2014-03-04 17:11:03 檢舉

tecksin提到:
犧牲自己照亮別人 阿伯大太偉大了

看見鐵大這樣說,我都對我這幾天對阿伯的惡言相向,感到慚愧不已....哭
阿伯...我對不起你.........(八點檔上身)

總裁 iT邦好手 1 級 ‧ 2014-03-04 19:37:10 檢舉

tecksin提到:
阿伯大太大了

泰大回來了嗎??....驚

6
summertw
iT邦好手 1 級 ‧ 2014-03-03 16:15:13

下面指令你試試看..
因為我這裡沒有你的資料可以Try,所以只能暫時用想的..
這個指令可能會有錯誤,你可以先一試,若有錯誤,可再貼上來檢討。

select A.MF001,B.MG002,B.MG003
from CMSMF A inner join CMSMG B (on B.MG001 = A.MF001 And
B.MG002 = (Select Distinct MAX(X.MG002)
From CMSMG X
Group By X.MG001))
order by A.MF001, B.MG002 desc

4
richardsuma
iT邦大師 3 級 ‧ 2014-03-04 12:33:34

SELECT D.MG001, D.MG002, D.MG003
from CMSMG D, (select A.MF001 as MF001 ,max(B.MG002) as MG002
from CMSMF A, CMSMG B
where A.MF001=B.MG001
Group By A.MF001) C
where D.MG001=C.MF001
and D.MG002=C.MG002

2
外獅佬
iT邦大師 1 級 ‧ 2014-03-04 23:45:27

嗯...這些個欄位是幹嘛用的?(推眼鏡)....
欄位名稱是不能取點有意義的嗎?暈

我要發表回答

立即登入回答