我正在寻求改进我使用SQL-Server 2005为ASP.NET 4.0中的小型Web应用程序编写的查询.此应用程序将允许用户按产品ID进行搜索并让它返回以下信息:
这是Products表的结构(我只包括相关列,这是一个已经在生产中的数据库,这些是非pk列)
在我放下查询之前,我到目前为止我只想说我可以通过多个查询轻松获取此信息,因此如果这是最佳实践,则忽略改进查询,但我的目标是最小化所需查询的数量获取所有需要的信息.
到目前为止我所拥有的:(注意:有一些行的价格= 0所以我忽略了那些在底部选择寻找MIN价格)
SELECT price, MAX(pDate)
FROM Products
WHERE product_id = @product_id AND
(price = (SELECT MAX(price)
FROM Products
WHERE product_id =@product_id) OR
price = (SELECT MIN(price)
FROM Products
WHERE product_id = @product_id AND price > 0))
GROUP BY price
Run Code Online (Sandbox Code Playgroud)
现在这返回2行:
我理想的是,如果可能的话,让查询返回1行,并带有上面列出的所有必需信息,因为它可以简化在ASP中显示ASP中的信息.就像我之前说的那样,如果有多个查询,那么就不需要在这里重新编写复杂的查询.
编辑
这是一些示例数据

所需的查询结果:(忽略我在excel中输入的格式)

以下是Ken Benson将要使用的查询:
SELECT TOP 1 prod.product_id,
minp.price AS minprice, minp.pDate as minlastdate,
maxp.price AS maxprice, maxp.pDate as maxlastdate,
ag.price AS averageprice
FROM …Run Code Online (Sandbox Code Playgroud) 我一直无法找到适当的查询来处理SQL Server中的这种情况.
有两个表,仓库和转移:
仓库
传递
我需要一个查询来返回:
到目前为止我尝试过的:
SELECT T.transfer_id, WH.wh_name, T.transfer_to
FROM transfer AS T INNER JOIN warehouse AS WH
ON T.transfer_from = WH.wh_id
Run Code Online (Sandbox Code Playgroud)
这只给出transfer_from的名称而不是transfer_to.我需要一个类似的查询,但我的SQL专业水平很低,我只是不知道如何处理这个问题.非常感谢任何指导.