【发布时间】:2011-04-19 21:06:25
【问题描述】:
在表 A(别名 ai)中,我有一个项目列表。在表 B(别名 aib)中,我有表 A 的所有项目的价格历史记录,但不是所有项目,对于那些,我需要选择 NULL。我需要从 A 表中选择商品,它是 B 表中的最高价格或 NULL。
这就是我所拥有的,但它不是很有效,如果表 B 具有广泛的价格历史记录,我会得到重复的记录。
这是不完全有效的查询:
SELECT *
FROM ItemGroup aig
INNER JOIN Item ai ON ai.groupID = aig.ID
LEFT JOIN Item_Prices aib ON ai.ID = aib.ItemID
WHERE aig.ID = @groupID AND
(aib.max_price = (SELECT MAX(price) AS highprice FROM Item_Prices
WHERE ItemID = ai.ID)
OR aib.price IS NULL)
ORDER BY end_date
欢迎所有建议。
尊敬的,
雷
【问题讨论】:
-
这里也有C表吗?
-
抱歉遗漏了重要的事实:SQL Server 2008 R2 和是的,有一个表 C。
标签: sql sql-server select left-join inner-join