SELECT 来自相同 table 的相同数据,只是条件与不同的列不同

SELECT same data from same table just with conditions as different columns

我认为最好先向您展示他的查询:

    SELECT 
    Positive.Amount AS PosAmount, 
    Negative.Amount AS NegAmount, 
    booking.Correction
FROM (booking)
LEFT JOIN ( SELECT ID, Amount FROM booking WHERE Amount < 0 ) 
    AS Negative ON booking.ID = Negative.ID
LEFT JOIN ( SELECT ID, Amount FROM booking WHERE Amount > 0 ) 
    AS Positive ON booking.ID = Positive.ID

我想在这里实现的是以下内容。我想要每次预订的金额,具体取决于它在不同列中是正数还是负数。这有可能以另一种更便宜的方式实现吗?我的意思是加入 table 本身不是最好的方法,对吗?

table 看起来像:

而想要的结果是这样的:

提前致谢!

你只需要在这里使用 CASE 语句。不需要子查询和自连接:

SELECT
    CASE WHEN amount > 0 THEN amount END as posAmount,
    CASE WHEN amount < 0 THEN amount END as negAmount,
    correction
FROM booking

我不太确定你想要什么。也许是聚合:

SELECT SUM(CASE WHEN Amount > 0 THEN b.Amount ELSE 0 END) as PosAmount, 
       SUM(CASE WHEN Amount < 0 THEN b.Amount ELSE 0 END) as NegAmount, 
       b.Correction
FROM booking b
GROUP BY b.correction;

也许只是两个不同的列:

SELECT (CASE WHEN Amount > 0 THEN b.Amount ELSE 0 END) as PosAmount, 
       (CASE WHEN Amount < 0 THEN b.Amount ELSE 0 END) as NegAmount, 
       b.Correction
FROM booking b;