0

SQLを使用してOracleの最初のテーブルを2番目のテーブルに変換する方法は?

最初のテーブルには、Time、TotalUsers、Department という 3 つの列があります。Department 列には、2 種類の値しかありません。1 つは * もう 1 つは null です。2 番目のテーブルで、* を含む TotalUsers を TotalUsersStar に、null を含む TotalUsers を TotalUsersNull にする必要があります。2番目の表をご覧ください。

最初のテーブル:

Date      TotalUsers        Department
199905      1234                 *
199912      2345                 *
200005      8923               (null)
200012      6783               (null)

2 番目のテーブル:

Date         TotalUsersNull       TotalUsersStar
199905                                1234
199912                                2345
200005         8923
200012         6783
4

3 に答える 3

0

とてもシンプルです -

CREATE TABLE second AS
SELECT date
     , CASE department
         WHEN NULL THEN totalUsers
         ELSE NULL
       END AS TotalUsersNull
     , CASE department
         WHEN '*' THEN  totalUsers
         ELSE NULL
       END AS TotalUsersStar
  FROM first;

詳細については、ここまたはここをクリックしてください。

于 2013-09-12T10:19:44.420 に答える
0

このようにしてみて、

WITH
     t AS
     ( SELECT TO_DATE('199905','YYYYMM') date_, 1234 total_users, '*' department FROM DUAL
     UNION
     SELECT TO_DATE('199912','YYYYMM'), 2345, '*' FROM dual
     UNION
     SELECT TO_DATE('200005','YYYYMM'), 8923, NULL FROM dual
     UNION
     SELECT TO_DATE('200012','YYYYMM'), 6783, NULL FROM dual
     )
SELECT
     DATE_,
     CASE
          WHEN department = '*'
          THEN NULL
          WHEN department IS NULL
          THEN total_users
     END TotalUsersNull,     
     CASE
          WHEN department = '*'
          THEN total_users
          WHEN department IS NOT NULL
          THEN NULL
     END TotalUsersStar
FROM
     t;
于 2013-09-12T03:42:34.547 に答える