我有两个包含订单的表。我需要检查表是否匹配。该表格如下所示,
tblOrders_Sent
Side Tag FxBuy BuyAmount FxCost CostAmount
B CHFEUR CHF 50 EUR 0
B EURSEK SEK 75 EUR 0
B EURNOK NOK 35 EUR 0
B DKKEUR DKK 20 EUR 0
S CHFEUR EUR 0 CHF 10
S EURSEK EUR 0 SEK 20
S EURNOK EUR 0 NOK 40
tblOrders_Recieved
Tag FxBuy MktBuy FxCost MktCost
EURNOK NOK 35 EUR 0
DKKEUR DKK 20 EUR 0
CHFEUR CHF 50 EUR 0
EURSEK SEK 75 EUR 0
EURNOK EUR 0 NOK 40
EURSEK EUR 0 SEK 20
CHFEUR EUR 0 CHF 10
当Side是" B"在Orders_Sent表中,我需要根据Orders_Recieved表中的MktBuy金额检查BuyAmount。如果Side是" S"虽然我需要检查Orders_Recieved表中的CostAmount与MktCost。这是可能的还是我需要将查询分成两个单独的查询?
我正在使用SQL Server 2012
所需输出
FxBuy FxCost SentAmt RecievedAmt Diff
CHF EUR 50 50 0
SEK EUR 75 75 0
NOK EUR 35 35 0
DKK EUR 20 20 0
EUR CHF 10 10 0
EUR SEK 20 20 0
EUR NOK 40 40 0
答案 0 :(得分:1)
CASE关键字对此有帮助。在你的情况下,据我所知,这个例子看起来像这样:
select
tblOrders_sent.fxBuy As FxBuy,
tblorders_sent.fxCost As FxCost,
tblorders_sent.buyamount as SentAmt,
tblorders_received.mktbuy as ReceivedAmt,
CASE Side WHEN 'B' THEN tblorders_sent.buyamount - tblorders_received.mktbuy END
tblorders_sent.costamount - tblorders_received.mktcost END AS diff
from tblOrders_sent
inner join tblOrders_received on
tblorders_sent.tag = tblorders_received.tag