2017-09-12 10 views
1

:たとえばオラクルの合計欄

select 1 AS NOT_OK, 
CASE WHEN 
    PPLP_NAME='PPL_CH_INVOICE' THEN 
    CASE WHEN 
    (to_char(START_TIME, 'dd')<='06' and to_char(START_TIME, 'dd')=to_char(END_TIME, 'dd')) 
    THEN 1 ELSE 0 END 
ELSE 
    CASE WHEN 
    (to_char(START_TIME, 'dd')='01' and to_char(END_TIME, 'dd')='01') 
    THEN 1 ELSE 0 END 
END 
AS STATUS, 
PPLP_NAME,SUCCESSFUL_ROWS,START_TIME,END_TIME from GENERAL_STATISTICS.PPLP_LOAD_GENSTAT2 

この出力:

それは中に2つの余分な列を作成することが可能である方法
  NOT_OK STATUS PPLP_NAME SUCCESSFUL_ROWS START_TIME  END_TIME 
       1 0 PPL_INVOICE 11598133 27/3/2013 12:34:59 PM 27/3/2013 1:23:07 PM 
       1 0 PPL_INVOICE 4883282  29/3/2013 11:14:10 AM 29/3/2013 11:35:53 AM 
       1 1 PPL_INVOICE 16634203 1/4/2013 5:32:28 AM 1/4/2013 6:15:21 AM 
       1 0 PPL_INVOICE 16659489 26/4/2013 9:22:38 AM 26/4/2013 10:25:28 AM 
       1 0 PPL_INVOICE 18192538 26/4/2013 11:02:47 AM 26/4/2013 11:54:43 AM 
       1 0 PPL_INVOICE 15900000 26/4/2013 1:12:59 PM 26/4/2013 2:12:21 PM 
       1 1 PPL_INVOICE 16168904 1/5/2013 12:51:37 PM 1/5/2013 2:22:21 PM 
       1 1 PPL_INVOICE 16414332 1/6/2013 3:37:04 AM 1/6/2013 4:18:38 AM 
       1 1 PPL_INVOICE 16112065 1/7/2013 8:17:55 AM 1/7/2013 9:38:15 AM 
       1 1 PPL_INVOICE 17731276 1/8/2013 3:50:51 AM 1/8/2013 4:41:09 AM 
       1 0 PPL_INVOICE 17731276 31/8/2013 3:59:38 AM 31/8/2013 4:50:42 AM 
       1 1 PPL_INVOICE 17572735 1/9/2013 2:59:29 PM 1/9/2013 3:46:47 PM 
       1 1 PPL_INVOICE 17820708 1/10/2013 8:36:01 AM 1/10/2013 10:16:01 AM 
       1 1 PPL_INVOICE 17008019 1/11/2013 3:59:32 AM 1/11/2013 4:54:17 AM 
       1 1 PPL_INVOICE 17070125 1/12/2013 4:04:20 AM 1/12/2013 4:52:03 AM 

私の上記の選択ステートメント、1つは状態の合計として、もう1つはnot_okの合計として?

ありがとうございます!

+0

あなたは、クエリの出力で私たちを助けてくださいすることができ、非agregatedレコードにステータスとNOT_OKの合計を示す必要があります –

+0

選択した合計(ステータス)、合計(not_ok)を..から追加することはできません。 – Moudiz

+0

@Moudiz、これは不可能です、オラクルは私に許可しません。 –

答えて

1

私はあなたを理解限り、私はあなたが試すことができると思います。

SELECT B.* 
, SUM(B.NOT_OK) OVER (PARTITION BY TO_CHAR(START_TIME,'MM')) AS TOT_NOT_OK 
, SUM(B.STATUS) OVER (PARTITION BY TO_CHAR(START_TIME,'MM')) AS TOT_STATUS 
FROM (
    SELECT 1 AS NOT_OK, 
     CASE WHEN PPLP_NAME='PPL_CH_INVOICE' THEN 
      CASE WHEN (to_char(START_TIME, 'dd')<='06' and to_char(START_TIME, 'dd')=to_char(END_TIME, 'dd')) 
        THEN 1 
        ELSE 0 END 
     ELSE CASE WHEN (to_char(START_TIME, 'dd')='01' and to_char(END_TIME, 'dd')='01') 
        THEN 1 
        ELSE 0 END 
     END 
     AS STATUS, 
     PPLP_NAME, 
     SUCCESSFUL_ROWS, 
     START_TIME,END_TIME 
    FROM GENERAL_STATISTICS.PPLP_LOAD_GENSTAT2 
    ) B 
+0

良いものを修正してください。しかし、それらはすべて同じです。どのようにしてこのクエリが改善され、合計が月ごとに区切られますか? ?? –

+0

私は理解しているとは分かりませんが、pls、SUM(B.NOT_OK)以上(TO_CHAR(START_TIME、 'MM'))のAS TOT_NOT_OK(テストはできません)あなたが確認したら、私は答えを編集します。 – etsa

+0

ご確認ください! –