簡體   English   中英

僅使用不同列的條件從同一表中選擇相同的數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM