2012-07-25 441 views
0

我有两个表,我想编写一个查询,将给予我这样做的最高和最低值,但它的显示''一些错误附近工会'... (使用union就是这样)在SQL如何找到最低和最高值

select TOP 1 od.productid,od.unitprice,totalprice=(od.unitprice-od.discount) from orderdetails od 
inner join 
orders o 
on od.orderid=o.orderid 
where o.orderdate between '10/7/1997' and '10/14/1997' 
order by totalprice asc 

union 

select TOP 1 od.productid,od.unitprice,totalprice=(od.unitprice-od.discount) from orderdetails od 
inner join 
orders o 
on od.orderid=o.orderid 
where o.orderdate between '10/7/1997' and '10/14/1997' 
order by totalprice asc 

我在做什么错?

+2

[**你尝试过什么?**](http://whathaveyoutried.com) – 2012-07-25 05:27:19

回答

1

让我们假设您使用的是Sql Server。

您不能将ORDER BY作为联合首选部分的一部分。

如果您想使用order by,您需要使用sub选项。

喜欢的东西

DECLARe @TABLE TABLE(
     Val VARCHAR(20) 
) 

SELECT * 
FROM (
      SELECT TOP 1 
        Val 
      FROM @TABLE 
      ORDER BY val 
     ) minVal 
UNION 
SELECT * 
FROM (
      SELECT TOP 1 
        Val 
      FROM @TABLE 
      ORDER BY val DESC 
     ) maxVal 
+0

非常感谢u必须解决我的概率的解决方案是 SELECT * FROM(选择TOP 1 od.productid,od.unitprice,totalprice =(od.unitprice-od.discount)from orderdetails od inner join orders o on od.orderid = o.orderid where o.orderdate between '10/7/1997'和'10/14/1997' order by totalprice asc )MAXVALUE UNION SELECT * FROM ( 选择TOP 1 od.productid,od.unitprice,totalprice =(od.unitprice-od.discount)从ORDERDETAILS OD 内部联接 级O 上od.orderid = O .orderid 其中'10/7/1997'和'10/14/1997'之间的订单数量为 order by totalprice desc )minvalue – ashi 2012-07-25 05:40:14

相关问题