Sql server 具有多个条件的SQL多重选择
我有一个数据表“债券价格”,其值如下:Sql server 具有多个条件的SQL多重选择,sql-server,Sql Server,我有一个数据表“债券价格”,其值如下: date | type | price 1/5/2019 bid 104.50 1/5/2019 bid 104.75 1/6/2019 bid 104.40 1/6/2019 bid 104.45 1/5/2019 offer 106.75 1/5/2019 offer 107.75 1/6/2019 offer 106.23 1/6/2019 offer 1
date | type | price
1/5/2019 bid 104.50
1/5/2019 bid 104.75
1/6/2019 bid 104.40
1/6/2019 bid 104.45
1/5/2019 offer 106.75
1/5/2019 offer 107.75
1/6/2019 offer 106.23
1/6/2019 offer 106.47
我想编写一个查询,给出给定日期的出价最高价格和出价最低价格,如以下输出:
date | Highest Bid | Lowest Offer
1/5/2019 104.75 106.75
1/6/2019 104.45 106.23
我可以通过这样做获得最高出价或最低出价
SELECT "date", max("price") AS "Highest Bid"
FROM "BondPrices"
WHERE "type"='bid'
GROUP BY "date"
或
但是,当我尝试将它们组合在一起(例如使用JOIN)时,会出现语法错误
如何使用多个条件编写select语句,从而产生多个列?这里有几种方法可以剥猫皮,这将使您达到以下目的:
SELECT
CAST(date AS DATE) Date,
MAX(CASE WHEN type = 'bid' THEN price ELSE NULL END) HighestBid,
MIN(CASE WHEN type = 'offer' THEN price ELSE NULL END) LowestOffer
FROM
BondPrices
GROUP BY
CAST(date AS DATE)
这里有几种剥猫皮的方法,这会让你达到目的:
SELECT
CAST(date AS DATE) Date,
MAX(CASE WHEN type = 'bid' THEN price ELSE NULL END) HighestBid,
MIN(CASE WHEN type = 'offer' THEN price ELSE NULL END) LowestOffer
FROM
BondPrices
GROUP BY
CAST(date AS DATE)