請幫助我構建查詢。如何在某些情況下獲得MAX值(SQL)
需要得到MAX(LVALUE)& SUM(BVALUE)。 這是非常簡單的要求,但有三個條件我應該考慮如下。
a。如果BVALUE爲零,則該行不應涉及構建MAX(LVALUE)。
b。每個NAME至少應打印一行。
c。如果所有BVALUE都爲零,MAX(LVALUE)應該爲零。
CREATE TABLE P_TEST
(
NAME VARCHAR2(10),
LVALUE NUMBER,
BVALUE NUMBER
)
/
INSERT INTO P_TEST VALUES('FIRST',929292,0);
INSERT INTO P_TEST VALUES('FIRST',12,32);
INSERT INTO P_TEST VALUES('FIRST',-34,0);
INSERT INTO P_TEST VALUES('FIRST',21,0);
INSERT INTO P_TEST VALUES('SECOND',79292,0);
COMMIT;
下面簡單的查詢工作,但MAX(左值)929292從bValue的1零值驅動,使得它超出了規則的。
SELECT NAME,MAX(LVALUE),SUM(BVALUE)
FROM P_TEST
GROUP BY NAME
/
@錯誤結果
NAME MAX(LVALUE) SUM(BVALUE)
---------- ----------- -----------
SECOND 79292 0
FIRST 929292 32
@期望的結果
NAME MAX(LVALUE) SUM(BVALUE)
---------- ----------- -----------
SECOND 0 0
FIRST 12 32
美麗。這就是我想試試的。CASE WHEN。非常感謝! – Sigularity