T_TMP:
NM_KIND VC_CODE NM_VALUE VC_ID
1 01 100 AA
1 02 200 AA
2 01 300 AA
2 02 400 AA
2 01 500 AA
1 02 600 AA
2 01 700 AA
1 01 800 BB
1 02 900 BB
1 02 1000 BBSQL> SELECT
2 NM_KIND,
3 VC_CODE,
4 SUM(NM_VALUE)
5 FROM
6 T_TMP
7 WHERE
8 VC_ID='AA'
9 GROUP BY
10 CUBE(NM_KIND),
11 VC_CODE
12 ORDER BY
13 NM_KIND,
14 VC_CODE; NM_KIND VC_CODE SUM(NM_VALUE)
---------- -------- -------------
1 01 100
1 02 800
2 01 1500
2 02 400
01 1600
02 12006行が選択されました。 1 SELECT
2 NM_KIND,
3 VC_CODE,
4 SUM(NM_VALUE)
5 FROM
6 T_TMP
7 WHERE
8 VC_ID='BB'
9 GROUP BY
10 CUBE(NM_KIND),
11 VC_CODE
12 ORDER BY
13 NM_KIND,
14* VC_CODE
SQL> / NM_KIND VC_CODE SUM(NM_VALUE)
---------- -------- -------------
1 01 800
1 02 1900
01 800
02 1900SQL>
但和我想要的不一样,第一条SQL文的结果没有问题,第二条的结果想要的是
NM_KIND VC_CODE SUM(NM_VALUE)
---------- -------- -------------
01 800
02 1900
就是说如果NM_KIND只有1个的话,只需要合计数据,因为数据是一样的。NM_KIND可以NVL为0。
想只用一条SQL文来实现,不用UNION ALL.
NM_KIND VC_CODE NM_VALUE VC_ID
1 01 100 AA
1 02 200 AA
2 01 300 AA
2 02 400 AA
2 01 500 AA
1 02 600 AA
2 01 700 AA
1 01 800 BB
1 02 900 BB
1 02 1000 BBSQL> SELECT
2 NM_KIND,
3 VC_CODE,
4 SUM(NM_VALUE)
5 FROM
6 T_TMP
7 WHERE
8 VC_ID='AA'
9 GROUP BY
10 CUBE(NM_KIND),
11 VC_CODE
12 ORDER BY
13 NM_KIND,
14 VC_CODE; NM_KIND VC_CODE SUM(NM_VALUE)
---------- -------- -------------
1 01 100
1 02 800
2 01 1500
2 02 400
01 1600
02 12006行が選択されました。 1 SELECT
2 NM_KIND,
3 VC_CODE,
4 SUM(NM_VALUE)
5 FROM
6 T_TMP
7 WHERE
8 VC_ID='BB'
9 GROUP BY
10 CUBE(NM_KIND),
11 VC_CODE
12 ORDER BY
13 NM_KIND,
14* VC_CODE
SQL> / NM_KIND VC_CODE SUM(NM_VALUE)
---------- -------- -------------
1 01 800
1 02 1900
01 800
02 1900SQL>
但和我想要的不一样,第一条SQL文的结果没有问题,第二条的结果想要的是
NM_KIND VC_CODE SUM(NM_VALUE)
---------- -------- -------------
01 800
02 1900
就是说如果NM_KIND只有1个的话,只需要合计数据,因为数据是一样的。NM_KIND可以NVL为0。
想只用一条SQL文来实现,不用UNION ALL.
我倒觉得正确结果更明了,尽管有看上去重复的数据。
但是一个小计结果,一个是总计结果,能一样吗?
性质不一样的数据怎么可能随便就去掉一行呢?
我不明白是你要这么做,还是客户?如果是客户,
那么正需要你去说服他,你是写程序的专家,他不是。
如果是你要这么做,我只能说你经验还少,需要多加历练。