当前位置:数据库 > Oracle >>

我需要写一个oracle数据库的SQL,操作三张表,第一张表是城市,第二张表是企业,第三张表是验收表

城市的ID对应企业里面cityID,企业的ID对应数据汇总里面regionID,验收表里有状态,1是验收未通过,0是验收通过,null是未验收。要求,查询ID为1234的城市下的验收通过的数,未验收的数,验收未通过的数,这里是把这个城下下所有企业的三种数量加起来,加在一起,效果图如下,希望sql语句高手给个答案,是oracle数据库操作哦,关键是怎么拼,怎么循环着查我不会
答案:select a.城市,sum(case when 状态='0' then 1 else 0 end)  验收通过,
sum(case when 状态='1' then 1 else 0 end)  验收未通过,
sum(case when 状态 is null then 1 else 0 end)  未验收
from 城市表 a,企业表 b,验收表 c
where a.id=b.cityid and b.id=c.regionid and a.id='1234'
group by a.城市
其他:select  a.cityNameColumn, sum(decode(状态,'0',1,0)) as 验收通过 ,
sum(decode(状态,'1',1,0)) as 验收未通过,
sum(case when 状态 is null then 1 else 0 end ) as 未验收
from 企业 a, 验收表 b where b.regionID = a. Id and a.cityId = '1234'  

OK ,给分吧 三张表,城市TAB,企业TAB,验收TAB
城市。id = 企业。cityid
企业。id = 数据汇总。regionID
那么,这两张表和验收表有关系么? 
如果数据汇总 == 验收表
SELECT
       A.城市  AS  “城市”,
       SUM(DECODE(C.状态, ‘1’, 1, 0)) AS  “验收未通过”,
       SUM(DECODE(C.状态, ‘0’, 1, 0)) AS  “验收通过”,
       SUM(WHEN C.状态 IS NULL, THEN 1, ELSE 0 END)) AS  “未验收”
FROM  城市表 A
        LEFT JOIN 企业表  B
        ON A.ID = B.CITYID
        LEFT JOIN 验收表  C
        ON B.ID = C.REGIONID
WHERE
        A.ID IN ('1', '2', '3', '4')
GROUP BY A.城市 

上一个:新安装的Oracle数据库,可是在建表的时候总是弹出目录路径无效错误。那位大侠知道怎么解决啊
下一个:两台相同的windows2003,A服务器上安装了oracle数据库,想在B上复制oracle数据库,包括帐号信息。谢谢!

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,