我有下面的查詢,我試圖比較兩個表。我可以看到兩個表具有匹配的行,但下面的查詢不返回任何行。我已經按照類似的問題的例子,但我不能讓查詢工作 - 不知道我缺少什麼?我讀過關於使用聯合查詢來比較兩個表,那會更好嗎?SQL服務器內連接在多個列與條件
SELECT H.[FUND_CD], H.[SEDOLCHK], H.[CURR]
FROM
HOLDINGS H
INNER JOIN
HOLDINGS_LIVE HL1 ON H.FUND_CD = HL1.FUND_CD
INNER JOIN
HOLDINGS_LIVE HL2 ON H.SEDOLCHK = HL2.SEDOLCHK
INNER JOIN
HOLDINGS_LIVE HL3 ON H.SEDOLCHK = HL3.CURR
WHERE
H.DATEU = '2014-03-06' AND HL1.DATEU = '2014-03-06'
編輯
請參閱回報應該返回的數據。我已更改基金& ID列,但列是字符串。所以我希望我的查詢做的是向我顯示任何行不完全相同的地方。例如,在表B中的第二行有一個名義上是表A.不同的表B中的價格也不同,以列A
Table A
Fund ID Nominal Currency Price Date Stamp
ABC 12345 34102 GBP 1257 06-03-2014 00:00:00
ABC 45678 14884 EUR 13.085 06-03-2014 00:00:00
ABC 32564 2404 EUR 65.97 06-03-2014 00:00:00
ABC 95874 13515 CHF 87 06-03-2014 00:00:00
ABC 96325 803201 GBP 247.3 06-03-2014 00:00:00
ABC 15648 39442 DKK 256.7 06-03-2014 00:00:00
DEF 78451 1761 USD 372.16 06-03-2014 00:00:00
DEF 48884 22936 USD 13.99 06-03-2014 00:00:00
DEF 33215 2288 USD 41.1 06-03-2014 00:00:00
DEF 68745 801 CAD 86.16 06-03-2014 00:00:00
Table B
Fund ID Nominal Currency Price Date Stamp
ABC 12345 34102 GBP 12.57 06-03-2014 00:00:00
ABC 45678 14800 EUR 0.13085 06-03-2014 00:00:00
ABC 32564 2404 EUR 0.6597 06-03-2014 00:00:00
ABC 95874 13515 CHF 0.87 06-03-2014 00:00:00
ABC 96325 803201 GBP 2.473 06-03-2014 00:00:00
ABC 15648 39442 DKK 2.567 06-03-2014 00:00:00
DEF 78451 1761 USD 3.7216 06-03-2014 00:00:00
DEF 48884 22936 USD 0.1399 06-03-2014 00:00:00
DEF 33215 2288 USD 0.411 06-03-2014 00:00:00
DEF 68745 801 CAD 0.8616 06-03-2014 00:00:00
最新查詢嘗試
SELECT H.[FUND_CD], H.[SEDOLCHK], H.[CURR]
FROM
HOLDINGS H
INNER JOIN
HOLDINGS_LIVE HL
ON
(
H.FUND_CD = HL.FUND_CD
AND H.SEDOLCHK = HL.SEDOLCHK
AND H.CURR = HL.CURR
)
我想你可能需要添加一些示例數據和期望的結果,很難知道爲什麼你沒有看到實際的數據沒有得到匹配。 –
當你拿走WHERE子句時,你會得到任何數據嗎?如果你這樣做,你看到「H.DATEU」實際上是2014-03-06和「HL1.DATEU」= 2014-03-06的結果嗎?您應該包含您認爲應該通過選擇返回的行。 – DrCopyPaste
嗨,感謝您的評論。請參閱我上面的編輯。我已經添加了數據。 – mHelpMe