使用sql查詢獲取行的總和

假設我有這個表結構:

CREATE TABLE TEST 
(
    X VARCHAR2(1),  -- firstName
    Y VARCHAR2(1),  -- lastName
    Z NUMBER(3),    -- quantity
    W VARCHAR2(1)   -- B=Buy or S=Sell 
);

INSERT INTO TEST(x, y, z, w) VALUES ('a', 'b', 3, 'S');
INSERT INTO TEST(x, y, z, w) VALUES ('a', 'b', 5, 'B'); -- sum of 3 S + 5 B = 2 B
INSERT INTO TEST(x, y, z, w) VALUES ('c', 'd', 10, 'S');
INSERT INTO TEST(x, y, z, w) VALUES ('c', 'd', 2, 'B'); -- sum of 10 S + 2 B = 8 S

我想對相同姓名和姓氏的數量求和,得到如下結果

X   Y   sum     W
------------------
a   b   2       B
c   d   8       S

有沒有可能在一個SQL查詢中得到這個結果?

GROUP BY很容易得到SUM,但是沒有找到一種方法來同時保持Buy和Sell列。

? 最佳回答:

哦,我明白了。我認為您需要一些附加條件邏輯的聚合:

select x, y,
       abs(sum(case when w = 'B' then z else - z end)) as sum,
       (case when sum(case when w = 'B' then z else - z end) >= 0
             then 'B' else 'S'
        end)
from test
group by x, y;
主站蜘蛛池模板: 国产一区三区三区| 久久久综合亚洲色一区二区三区| 国产在线精品一区二区在线看 | 中文字幕日本一区| 色婷婷av一区二区三区仙踪林| 中文字幕日韩人妻不卡一区| 日韩高清一区二区三区不卡 | 2022年亚洲午夜一区二区福利| 国产AⅤ精品一区二区三区久久| 中文字幕一区二区三区在线播放 | 亚洲一区二区视频在线观看| 亚洲乱色熟女一区二区三区蜜臀 | 国产一区二区电影| 精品久久久久中文字幕一区 | 亚洲日韩AV无码一区二区三区人| 亚洲一区二区三区在线观看精品中文 | 国产在线精品一区免费香蕉| 日本美女一区二区三区| 日韩高清一区二区| 综合激情区视频一区视频二区| 国产成人精品一区二区A片带套| 亚洲一区中文字幕在线电影网| 少妇人妻精品一区二区三区| 亚洲AV美女一区二区三区| 精品成人乱色一区二区| 国产91大片精品一区在线观看| 色系一区二区三区四区五区| 日本精品夜色视频一区二区| 精品国产一区二区三区在线观看| 中文字幕在线无码一区二区三区| 一区二区免费视频| 亚洲一区二区三区影院| 亚洲一区二区三区免费| 无码日韩精品一区二区三区免费| 亚洲国产美女福利直播秀一区二区| 色婷婷香蕉在线一区二区| 国产精品一区二区av| 一区二区三区观看免费中文视频在线播放| 日韩精品视频一区二区三区| 亚洲一区中文字幕久久| 亚洲综合一区国产精品|