ORACLE查询问题,新人求教

Lloydsan 2012-05-25 10:07:32
ID(土地图斑号) AREA(面积) TYPE(类型) XZQY(行政区域)
0001 32 A(水田) WH(武汉)
0002 3 D(草地) WH
0003 878 B(旱地) SH(上海)
0004 34 C(菜地) WH
0005 2 D BJ(北京)
0006 7 A WH
0007 43 C WH
0008 43 B WH

假设有10000条类似的数据,行政区域有20多个,地类有50种,

我现在要查出各行政区域的A、B、C三种地类的总面积,结果表如下:

XZQY TYPE_A TYPE_B TYPE_C

请问语句该怎么写?
...全文
142 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinan9 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
引用 8 楼 的回复:

不会吧,我这边测试过 没有问题的,你SQL我看下

问题找到了 数字类型的也要用' '括起来 ,万分感谢你的帮助!!!
[/Quote]060111,明显是字符串类型啊
Lloydsan 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

不会吧,我这边测试过 没有问题的,你SQL我看下
[/Quote]
问题找到了 数字类型的也要用' '括起来 ,万分感谢你的帮助!!!
Lloydsan 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

不会吧,我这边测试过 没有问题的,你SQL我看下
[/Quote]
select XZQYBM,
NVL(SUM(DECODE(LANDTYPE,060111,AREA)),0) ST,
NVL(SUM(DECODE(LANDTYPE,060112121,AREA)),0) SJD,
NVL(SUM(DECODE(LANDTYPE,060112122,AREA)),0) CD,
NVL(SUM(DECODE(LANDTYPE,'060113a',AREA)),0) LOWHD,
NVL(SUM(DECODE(LANDTYPE,'060113d',AREA)),0) OVERHD,
NVL(SUM(DECODE(LANDTYPE,060114,AREA)),0) HTD
FROM LAND_INFO
GROUP BY XZQYBM

XZQYBM就对应XZQY,LANDTYPE就对应TYPE,TYPE_A TYPE_B之类就对应ST SJD之类,
第一次因为XZQYBM后面忘打逗号了,所以说缺FROM关键字,现在改了,但是提示 ORA-07122:无效数字
yinan9 2012-05-25
  • 打赏
  • 举报
回复
不会吧,我这边测试过 没有问题的,你SQL我看下
Lloydsan 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

判断type,如果是A,就SUM()求和他的面积。如果没有该类型面积,返回则为NULL.
NVL()函数,当面积和为空时,就赋值为0.
建议你还是先看书学习吧。
[/Quote]
嗯,学习了,刚刚查询了下,提示缺少from关键字,还是谢谢了啊
yinan9 2012-05-25
  • 打赏
  • 举报
回复
判断type,如果是A,就SUM()求和他的面积。如果没有该类型面积,返回则为NULL.
NVL()函数,当面积和为空时,就赋值为0.
建议你还是先看书学习吧。
Lloydsan 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

SQL code

SELECT XZQY,
NVL(SUM(DECODE(TYPE, 'A', AREA)), 0) TYPE_A,
NVL(SUM(DECODE(TYPE, 'B', AREA)), 0) TYPE_B,
NVL(SUM(DECODE(TYPE, 'C', AREA)), 0) TYPE_B
FROM TBL
GROUP BY……
[/Quote]
NVL(SUM(DECODE(TYPE, 'A', AREA)), 0) TYPE_A这句话里的0是什么意思啊?
yinan9 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
SQL code

SELECT XZQY,
NVL(SUM(DECODE(TYPE, 'A', AREA)), 0) TYPE_A,
NVL(SUM(DECODE(TYPE, 'B', AREA)), 0) TYPE_B,
NVL(SUM(DECODE(TYPE, 'C', AREA)), 0) TYPE_B
FROM TBL
GRO……
[/Quote]

--之前别名有点问题 type_C
SELECT XZQY,
NVL(SUM(DECODE(TYPE, 'A', AREA)), 0) TYPE_A,
NVL(SUM(DECODE(TYPE, 'B', AREA)), 0) TYPE_B,
NVL(SUM(DECODE(TYPE, 'C', AREA)), 0) TYPE_C
FROM TBL
GROUP BY XZQY
yinan9 2012-05-25
  • 打赏
  • 举报
回复

SELECT XZQY,
NVL(SUM(DECODE(TYPE, 'A', AREA)), 0) TYPE_A,
NVL(SUM(DECODE(TYPE, 'B', AREA)), 0) TYPE_B,
NVL(SUM(DECODE(TYPE, 'C', AREA)), 0) TYPE_B
FROM TBL
GROUP BY XZQY
Lloydsan 2012-05-25
  • 打赏
  • 举报
回复
能问下怎么写么?我是新手!!万分感谢啊
yinan9 2012-05-25
  • 打赏
  • 举报
回复
使用 decode 函数

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧