1

だから私はSQLにテーブルを持っています。それはこのようになります

controlnum  taxyear        payrollg                 alaska
12334        2012           16                      25
12334        2012           16                      25
12334        2012           16                      NULL
12334        2012           16                      NULL
12334        2012           16                      25
12334        2012           16                      25
12332        2012           14                      23
12332        2012           14                      NULL
12333        2012           14                      23
12333        2012           14                      NULL

私はそれを平らにしたい

controlnum  taxyear        payroll                 alaska
12334        2012           16                      25
12333        2012           14                      23
12332        2012           14                      23

これが私が試したクエリです。構文エラーが発生します。誰か助けてください。

SELECT 
Controlnum "controlNumber",
taxyear "taxYear",
payrollg "payRollGroup"

FROM 
states

MAX (CASE WHEN alaska IS NOT NULL THEN alaska ELSE NULL END) AS 'Alaska'
4

3 に答える 3

5
    SELECT 
    Controlnum "controlNumber",
    taxyear "taxYear",
    payrollg "payRollGroup"
    MAX(NVL(alaska, 0)) 'Alaska'--NVL if you want a zero value when only null values exist...
    -- or NVL(MAX(alaska), 0)
    FROM 
    states
    GROUP BY Controlnum, taxyear, payrollg
于 2012-06-22T13:33:01.970 に答える
1

私はあなたが欲しいと思います

SELECT controlNum,
       taxYear,
       payrollG,
       MAX( alaska )
  FROM states
 GROUP BY controlNum,
          taxYear,
          payrollG;
于 2012-06-22T13:32:51.460 に答える
1

オラクルはわかりませんが、これでうまくいくはずです。

SELECT Distinct
    Controlnum "controlNumber",
    taxyear "taxYear",
    payrollg "payRollGroup",
    alaska "Alaska"
FROM states
WHERE alaska IS NOT NULL;

編集- アラスカ列を追加

于 2012-06-22T13:35:41.947 に答える