基于一个不同的列从行中选择所有值
问题描述:
我一直在浏览论坛,同时试图找到我的问题的解决方案。基于一个不同的列从行中选择所有值
我有一个表在SQL Server 2000中调用result
与以下数据;
City Price DepDate RetDate
Barcelona 145 2010-05-15 2010-05-20
New York 400 2010-06-20 2010-06-20
Barcelona 160 2010-05-17 2010-05-22
New York 325 2010-05-10 2010-05-18
Istanbul 250 2010-06-22 2010-06-27
我想查询在SQL Server 2000,以便将返回所有列,但它是截然不同/潮头上的城市,仅显示价格最低。
所以我想它返回以下
Barcelona 145 2010-05-15 2010-05-20
New York 325 2010-05-10 2010-05-18
Istanbu 250 2010-06-22 2010-06-27
我不能为我的生活弄清楚如何做到这一点,我应该很容易,我敢肯定,我会觉得愚蠢当解决方案。
有谁知道如何做到这一点?
Brgds, 埃里克
答
SELECT
A1.*
FROM
[TableName] A1
INNER JOIN
(
SELECT
A.City
, A.Price
, MIN(A.DepDate) AS DepDateMin
FROM
[TableName] A
INNER JOIN
( SELECT
City
, MIN(Price) AS PriceMin
FROM
[TableName]
GROUP BY City
) B ON A.City = B.City AND A.Price = B.PriceMin
GROUP BY
A.City, A.Price
) B1 ON A1.City = B1.City AND A1.Price = B1.PriceMin AND A1.DepDate = B2.DepDateMin
答
试试这个
select City,Price,DepDate,,RetDate from Your_table a
where a.Price = (select min(Price) from Your_table b
where a.city = b.city group by city)
+0
这似乎也适用于:) – 2010-08-10 10:45:13
需要在查询修改给别名MIN(价格)和条件应该是A.price = B.,之后,此查询将起作用 –
2010-08-10 09:55:17
It Works!非常感谢你,希望我能理解它是如何工作的。我一直在这个多年。谢谢!! – 2010-08-10 10:05:29
一个简单的问题是,修改这个问题很容易,因此价格也必须明显不同。 – 2010-08-10 10:11:37