比方说 select 字段A, B , C , D,
case when 字段E in ('ss','hh') THEN
'Y' ELSE 'N' END AS E1 FROM T表
Where 字段E not in ('ss','hh');
和这个套一层的sql如下
select T1.A ,T1.B, T1.C, T1.D, T1.E1
FROM
(
select 字段A, B , C , D,
case when 字段E in ('ss','hh') THEN
'Y' ELSE 'N' END AS E1 FROM T表
) T1
WHERE
T1.E1 = 'N'
这两个运行出来达到的结果集好像不一样,请问是哪里出错了? 目的是取E1为N的情况
首先你要确认字段E的值有几个,是否只有3个值:ss、hh、N,是否有空值。如果有其他值,结果会不一样。
select 字段A, B , C , D,
case when 字段E in ('ss','hh') THEN
'Y' ELSE 'N' END AS E1 FROM T表
Where 字段E not in ('ss','hh')
这段sql,筛选条件过滤:E不是ss和hh的数据
select T1.A ,T1.B, T1.C, T1.D, T1.E1
FROM
(
select 字段A, B , C , D,
case when 字段E in ('ss','hh') THEN
'Y' ELSE 'N' END AS E1 FROM T表
) T1
WHERE
T1.E1 = 'N'
这段sql,筛选的是:E是N的数据