在sql中如何找到最低和最高值

时间:2012-07-25 05:22:51

标签: sql union

我有两个表,我想写一个查询,它会给出我这样做的最高和最低值,但它显示''在union附近有一些错误'....(使用union是mand。)< / p>

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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

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

你不能将ORDER BY作为工会第一部分的一部分。

如果您希望使用order by,则需要使用子选择。

这样的东西
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