非常简化,我有一列数字和一列日期.我想生成一行,将基于一个日期的数字合并为一列,将另一个日期合并为另一列.
数据看起来像这样 -
date number
201111 500
201111 500
201111 500
201109 500
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样 -
sum1 sum 2
1500 500
Run Code Online (Sandbox Code Playgroud)
我正在使用的代码:
SELECT SUM(A1.COL1),SUM(A2.COL1)
FROM TAB1 A1,TAB1 A2
WHERE A1.DATE = '201111'
AND A2.DATE = '201109'
Run Code Online (Sandbox Code Playgroud)
我得到的结果是 -
sum1 sum2
1000 1500
Run Code Online (Sandbox Code Playgroud)
基本上,它并不是总和sum1的总和(应该是1500但是返回1000)并且它总和sum2太多(应该是500但是返回1500).
你可能想要这样的东西
SELECT SUM( case when date = '201111' then col1 else null end ) sum1,
SUM( case when date = '201109' then col1 else null end ) sum2
FROM tab1
WHERE date in ('201109', '201111')
Run Code Online (Sandbox Code Playgroud)
当然,您应该考虑将日期存储在DATE列中而不是VARCHAR2列中.
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |