0

我有一个交易表,其中包含交易日期、交易总额和信用卡 ID。我将此交易表加入到具有信用卡 ID 和信用卡类型的 cardtype 表中——该表仅包含 4 行信用卡类型为 Visa、Master Card、Discover 和 American Express。

我想查看每个日期和地点的所有交易日期、总计和信用卡类型,但我想为所有日期和信用卡类型返回一行,即使没有使用特定信用卡类型进行交易(即我会即使没有使用 Visa 信用卡进行任何交易,也可以在 9 月 1 日返回 4 行)。

右连接不起作用,因为所有 4 种信用卡类型都在不同的日期使用。有任何想法吗?

4

1 回答 1

0

您需要使用返回所有交易日期和信用卡类型的叉积的子查询,然后将其与交易 LEFT JOIN:

SELECT c.txn_date txn_date, card_type, SUM(txn_total) daily_total
FROM (SELECT card_id, card_type, txn_date
      FROM cardtype
      JOIN (SELECT DISTINCT txn_date FROM transaction) t) c
LEFT JOIN transaction t
ON t.card_id = c.card_id AND t.txn_date = c.txn_date
GROUP BY c.card_id, txn_date
ORDER BY txn_date, card_type

SQLFIDDLE

于 2013-10-23T17:33:54.293 回答