现在有 一张表 table_a
字段 a 为主键
字段 b 为外键 (table_b 的主键 其中 a到b 对多对1的关系)
还有字段c那么 select count(distinct b) from table_a where c=1;
这样的一句SQL 怎么用一个CASE 体现出来。。
因为考虑到这样的CASE 有很多(报表嘛) 所以 各种条件什么的都不应该在where 和group by等等 中设置
哎 。。烦躁啊。。苦思两日而不得
厚颜求助。
字段 a 为主键
字段 b 为外键 (table_b 的主键 其中 a到b 对多对1的关系)
还有字段c那么 select count(distinct b) from table_a where c=1;
这样的一句SQL 怎么用一个CASE 体现出来。。
因为考虑到这样的CASE 有很多(报表嘛) 所以 各种条件什么的都不应该在where 和group by等等 中设置
哎 。。烦躁啊。。苦思两日而不得
厚颜求助。
select (case when c=1 then count(distinct b) end ) number
from table_a;c不定的话可以把where后面的c作为一个参数嘛..
from table_a;
这样为什么不行呢
简单case函数..
CASE判断语句,如果成立,那么执行1,否则执行2;有点类似三目运算符。
select type,
sum(case vender when 'A' then pcs else 0 end),
sum(case vender when 'C' then pcs else 0 end),
sum(case vender when 'B' then pcs else 0 end)
FROM tablename group by type
----CASE搜索函数
SELECT S#,(CASE WHEN GRADE IS NULL THEN '缺考'
WHEN GRADE>85 THEN '优'
WHEN GRADE BETWEEN 75 AND 84 THEN '良'
WHEN GRADE BETWEEN 60 AND 74 THEN '及格'
WHEN GRADE<60 THEN '不及格'
END ) 分数
FROM SC
两种写法的返回结果是相同的,但是第一种的局限性会比较大,比如有些时候做判断的时候,以上是我整理的.
还是有问题啊说 b 没有包含在聚合函数或者group by 中。怎么办啊怎么办