我需要写一个oracle数据库的SQL,操作三张表,第一张表是城市,第二张表是企业,第三张表是验收表
城市的ID对应企业里面cityID,企业的ID对应数据汇总里面regionID,验收表里有状态,1是验收未通过,0是验收通过,null是未验收。要求,查询ID为1234的城市下的验收通过的数,未验收的数,验收未通过的数,这里是把这个城下下所有企业的三种数量加起来,加在一起,效果图如下,希望sql语句高手给个答案,是oracle数据库操作哦,关键是怎么拼,怎么循环着查我不会
城市的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数据库,包括帐号信息。谢谢!