0

私は2つのテーブルを持っており、この方法で行っている最高値と最低値を与えるクエリを書きたいと思っていますが、「ユニオンの近くでいくつかのエラー」が表示されます....(ユニオンを使用することは必須です。)

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 を使用していると仮定します。

ORDER BYユニオンの最初の選択部分の一部として as を使用することはできません。

order by を使用する場合は、sub select を使用する必要があります。

何かのようなもの

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 に答える