SQL两表查询,结果错误,请高手赐教

zyzg8058 发布于 2017/09/03 18:57
阅读 261
收藏 0

我有两个表,A表是【运行记录】,B表是【钢种标准】——字段钢种唯一,是数据标准。
【运行记录】表:

【钢种标准】表


要求:查询【运行记录】表中连铸钢种所有数据和,和不符合【钢种标准】的数据和,按连铸钢种分组求出
下表是运行结果,不合格数和Si不合格数均不对,如何修改?请高手赐教!
运行代码:
select 连铸钢种,count(连铸钢种) as 炉数,(select count(连铸钢种) from 运行记录 where 连铸钢种 in (select 钢种 from 钢种标准 where 连铸钢种=钢种 and 中包C<C下)) as 不合格数 ,(select count(中包Si) from 运行记录,钢种标准 where 中包Si < Si下 and 连铸钢种=钢种 ) as Si不合格数2 from 运行记录 group by 连铸钢种 


加载中
0
Shabby-滔
Shabby-滔

select 连铸钢种, count(连铸钢种) as 炉数, sum(case when 中包C<C下 then 1 ELSE 0 END ) as 不合格数, sum(case when 中包Si<Si下 then 1 ELSE 0 END ) as 不合格数2  from 运行记录 LEFT JOIN 钢种标准 on 连铸钢种 = 钢种 group by 连铸钢种

 

试试这个.

0
z
zyzg8058

非常谢谢Shabby-滔解答,我试过之后,结果如下:

windows xp vb.6.0

windows 7 vb6.0

运行后长时间无反应

请赐教!再次感谢!

0
Shabby-滔
Shabby-滔

..不支持这个语法吗..你是啥数据库..

0
k
kevin-朱

看他的group by运行结果应该是mysql分支的,反正肯定不是oracle

 

0
k
kevin-朱

把建表语句跟insert发出来,要测下才行

 

0
k
kevin-朱

如果是oracle就用分析函数,如果是mysql就用@绑定方式

0
z
zyzg8058

谢谢各位网友的帮助!我按照Shabby-滔提供的方法进行了原因查询:

1. case when 不支持Access 数据库,用iif函数代替。

2. on 连铸钢种 = 钢种 改为  on运行记录.连铸钢种 = 钢种标准.钢种

修改后的查询语句:

select 连铸钢种 ,count(连铸钢种) as 炉数,sum(iif(中包C<C下,1,0)) as 不合格数, sum(iif(中包Si<Si下,1,0)) as Si不合格数2  from 运行记录 LEFT JOIN 钢种标准 on 运行记录.连铸钢种=钢种标准.钢种 group by 连铸钢种

再次感谢各位高手的帮助!

 

0
z
zyzg8058

引用来自“Shabby-滔”的评论

select 连铸钢种, count(连铸钢种) as 炉数, sum(case when 中包C<C下 then 1 ELSE 0 END ) as 不合格数, sum(case when 中包Si<Si下 then 1 ELSE 0 END ) as 不合格数2  from 运行记录 LEFT JOIN 钢种标准 on 连铸钢种 = 钢种 group by 连铸钢种

 

试试这个.

谢谢您的帮助!

select 连铸钢种 ,count(连铸钢种) as 炉数,sum(iif(中包C<C下,1,0)) as 不合格数, sum(iif(中包Si<Si下,1,0)) as 不合格数2  from 运行记录 LEFT JOIN 钢种标准 on 运行记录.连铸钢种=钢种标准.钢种 group by 连铸钢种

0
z
zyzg8058

新的运行后结果

返回顶部
顶部