[英]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
我想在这里实现的是以下内容。 我希望每个预订的金额取决于它在不同列中是正数还是负数。 这可能是另一种更便宜的方式吗? 我的意思是加入一张桌子本身不是最好的方法,可以吗?
该表看起来像:
而期望的结果是这样的:
提前致谢!
你只需要在这里使用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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.