当前位置: 代码迷 >> Oracle开发 >> 求一条SQL 语句,该怎么处理
  详细解决方案

求一条SQL 语句,该怎么处理

热度:394   发布时间:2016-04-24 06:32:36.0
求一条SQL 语句
A 表
ID         月份   金额
123      01          100
123      02          200
123      03          400
321      12          200

B 表

月份
01
02
03
04
05
06
07
08
09
10
11
12

怎么得出 C 表

ID         月份   金额
123      01          100
123      02          200
123      03          400
123     04           0
123     05           0
123     06          0
123    07           0
123     08         0
123     09         0
123    10          0
123    11          0
123     12           0
321     01          0
321     02          0
321     03          0
321     04          0
321     05          0
321     06          0
321     07          0
321     08          0
321     09         0
321     10          0
321     11          0
321     12         0

321     01          0












------解决思路----------------------
测试结果
SQL> WITH A AS (
  2  SELECT 123 ID,'01' 月份,100 金额 FROM DUAL UNION ALL
  3  SELECT 123 ID,'02' 月份,200 金额 FROM DUAL UNION ALL
  4  SELECT 123 ID,'03' 月份,400 金额 FROM DUAL UNION ALL
  5  SELECT 321 ID,'12' 月份,200 金额 FROM DUAL
  6  ),B AS (
  7  SELECT 01 月份 FROM DUAL UNION ALL
  8  SELECT 02 月份 FROM DUAL UNION ALL
  9  SELECT 03 月份 FROM DUAL UNION ALL
 10  SELECT 04 月份 FROM DUAL UNION ALL
 11  SELECT 05 月份 FROM DUAL UNION ALL
 12  SELECT 06 月份 FROM DUAL UNION ALL
 13  SELECT 07 月份 FROM DUAL UNION ALL
 14  SELECT 08 月份 FROM DUAL UNION ALL
 15  SELECT 09 月份 FROM DUAL UNION ALL
 16  SELECT 10 月份 FROM DUAL UNION ALL
 17  SELECT 11 月份 FROM DUAL UNION ALL
 18  SELECT 12 月份 FROM DUAL
 19  )
 20  SELECT T.ID,B.月份,nvl(A.金额,0) 金额
 21  FROM (
 22  select distinct ID from A) T JOIN B
 23  ON 1=1
 24  LEFT JOIN A
 25  ON T.ID=A.ID AND  B.月份=A.月份
 26  order by T.ID,B.月份;

        ID       月份       金额
---------- ---------- ----------
       123          1        100
       123          2        200
       123          3        400
       123          4          0
       123          5          0
       123          6          0
       123          7          0
       123          8          0
       123          9          0
       123         10          0
       123         11          0

        ID       月份       金额
---------- ---------- ----------
       123         12          0
       321          1          0
       321          2          0
       321          3          0
       321          4          0
       321          5          0
       321          6          0
       321          7          0
       321          8          0
       321          9          0
       321         10          0

        ID       月份       金额
---------- ---------- ----------
       321         11          0
       321         12        200

已选择24行。

SQL>
  相关解决方案