0

我有两个表,我想写一个查询,它会给出我这样做的最高和最低值,但它显示''联合附近的一些错误'......(使用联合是命令。)

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

我究竟做错了什么?

4

1 回答 1

1

让我们假设您正在使用 Sql Server。

您不能将 anORDER 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
于 2012-07-25T05:29:14.733 回答