我有一個與它有MM關係的貨幣(Rec_ID,貨幣)表它自己導致CurrencyExchangeRate表(Rec_ID,Currency_FK1 AS'FROM',Currency_FK2 AS'TO, Exchange_Rate)如何創建一個查詢來列出所有組合的可能性
現在我需要一個查詢來完成貨幣rec_id(不允許重複), 以及匯率或null的所有組合。如果貨幣中有3條記錄,那麼我查詢應該返回6行。
感謝
我有一個與它有MM關係的貨幣(Rec_ID,貨幣)表它自己導致CurrencyExchangeRate表(Rec_ID,Currency_FK1 AS'FROM',Currency_FK2 AS'TO, Exchange_Rate)如何創建一個查詢來列出所有組合的可能性
現在我需要一個查詢來完成貨幣rec_id(不允許重複), 以及匯率或null的所有組合。如果貨幣中有3條記錄,那麼我查詢應該返回6行。
感謝
SELECT
CCY1, CCY2, CER.Exchange_Rate
FROM
(
SELECT
c1.rec_id AS rec_id1, c1.currency AS CCY1,
c2.rec_id AS rec_id2, c2.currency AS CCY2
FROM
currency c1
CROSS JOIN --all combinations...
currency c2
WHERE
c1.rec_id <> c2rec_id -- ...removes same pairs
) foo
LEFT JOIN -- ...get matching FX pairs
CurrencyExchangeRate CER ON foo.rec_id1 = cer.[from] AND foo.rec_id2 = cer.[to]
如果你想所有組合(即使是那些沒有定義率),然後用自己先加入,然後與利率
SELECT
c1.currency AS [From], c2.currency AS [To] , cer.Exchange_Rate
FROM
currency c1 JOIN currency c2 ON c1.rec_id <> c2.rec_id
LEFT OUTER JOIN CurrencyExchangeRate cer ON c1.rec_id = cer.[from]
AND c2.rec_id = cer.[to]