表 byq_hz 如下:
GQ SYEAR SMONTH XZ GZ CC DS
工区5 2010 08 0 0 1 1
工区3 2010 08 0 1 0 0
工区2 2009 01 2 0 0 0
工区1 2009 06 0 2 1 0
工区1 2010 05 0 1 0 0
工区1 2010 08 2 1 1 0字段说明:GQ=工区 ,SYEAR=年度 SMONTH=月份 XZ,GZ,CC,DS 为数据条件为:
GQ = 工区1 SYEAR = 2010
查询的结果为:
SMONTH XZ GZ CC DS
01
02
03
04
05 0 1 0 0
06
07
08 2 1 1 0
09
10
11
12说明:
条件为GQ 和 SYEAR
结果要根据数据情况
有记录的把数据显示出来
没有记录的加入一条空记录
如GQ = 工区1 SYEAR = 2010 SMONTH=12没有记录,则放入一条空记录
要求查询结果必须是12条记录。如何用一条SQL写出来呢?
GQ SYEAR SMONTH XZ GZ CC DS
工区5 2010 08 0 0 1 1
工区3 2010 08 0 1 0 0
工区2 2009 01 2 0 0 0
工区1 2009 06 0 2 1 0
工区1 2010 05 0 1 0 0
工区1 2010 08 2 1 1 0字段说明:GQ=工区 ,SYEAR=年度 SMONTH=月份 XZ,GZ,CC,DS 为数据条件为:
GQ = 工区1 SYEAR = 2010
查询的结果为:
SMONTH XZ GZ CC DS
01
02
03
04
05 0 1 0 0
06
07
08 2 1 1 0
09
10
11
12说明:
条件为GQ 和 SYEAR
结果要根据数据情况
有记录的把数据显示出来
没有记录的加入一条空记录
如GQ = 工区1 SYEAR = 2010 SMONTH=12没有记录,则放入一条空记录
要求查询结果必须是12条记录。如何用一条SQL写出来呢?
解决方案 »
- 问个oracle双机热备的问题
- oracle sha1 加密 解密 ,plsql 实现 求例子
- 关于 oracle 分页问题
- oracle为什么建不了索引?
- 机械工业出版社-oracle黑皮书系列具体指的是哪几本?
- 新年好!请教Linux下OCI的动态库及其头文件的位置!
- 有谁应用oracle application server 请给我帮助。
- 在oracle中如何才可以看到数据库的表的记录?
- 刚学,请求各位给点学习思路!
- Oracle判断email表中is_delete字段是否都为零,如果都为零则删除所有信息,SQL语句该怎么写
- sql排序问题
- orcal 中查询10天数据 存储过程怎么写 在线等待(急)
((select lpad(rownum,2,0) MON from dual connect by rownum<=12) A
LEFT JOIN (SELECT * FROM byq_hz WHERE GQ ='¹¤Çø1' AND SYEAR = '2010'
) B ON A.MON=B.SMONTH)
(SELECT LPAD(ROWNUM,2,0) m FROM DUAL CONNECT BY ROWNUM<=12) t1,
(SELECT * FROM byq_hz WHERE gq='工区1' AND syear='2010') t2
WHERE t1.m=t2.smonth(+)
ORDER BY t1.m如果byq_hz表中相同工区、年、月有重复数据需要在t2中处理了先
[url http://www.cnblogs.com/gkl0818/archive/2009/02/25/1398078.html][/url]
你给的SQL执行后提示缺少右括号,改成如下好使了。
SELECT * FROM
(select lpad(rownum,2,0) MON from dual connect by rownum<=12) A
LEFT JOIN (SELECT * FROM byq_hz WHERE GQ ='¹¤Çø1' AND SYEAR = '2010'
) B ON A.MON=B.SMONTHto cnwz:
你的SQL 好用。to zhuomingwang:
文章内容部是我想要的。不过谢谢。