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)