so easy的查询杂症...

专业搬砖填坑 2016-03-29 07:11:03
case1:
数据:
A
A
A
查询出来是
A
=============
case2:
数据:
A
B
A
查询出来是
A
B
A
怎么用一个sql来实现包括上面两个case的查询呢?先谢谢了...
...全文
163 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
专业搬砖填坑 2016-06-06
  • 打赏
  • 举报
回复
没有搞定,结贴了。
Ginnnnnnnn 2016-03-30
  • 打赏
  • 举报
回复
with t1(s) as 
(
--select 'A' UNION ALL  --注释切换
--select 'B' UNION ALL
--select 'A' 
select 'A' UNION ALL
select 'A' UNION ALL
select 'A' 
)
SELECT MAX(s) AS s
	FROM t1
		HAVING COUNT(DISTINCT s) = 1
UNION ALL
SELECT s
	FROM t1 a
		WHERE EXISTS(SELECT * FROM t1 WHERE s <> a.s)
spiritofdragon 2016-03-30
  • 打赏
  • 举报
回复
一个SQL实现,我能想到的就是这种排列组合查询.即费脑子可读性又不高...所以能写if就用if判断写两个SQL吧.即轻松又有可读性
spiritofdragon 2016-03-30
  • 打赏
  • 举报
回复
with t1(s) as 
(
--select 'A' UNION ALL  --注释切换
--select 'B' UNION ALL
--select 'A' 
select 'A' UNION ALL
select 'A' UNION ALL
select 'A' 
)
select t1.* 
from t1 
	,(select 1 cc from (select case when COUNT(distinct s)=1 then 1 else 0 end c from t1) t where t.c!=1)tt
union all
select distinct t1.* 
from t1 
	,(select 1 cc from (select case when COUNT(distinct s)=1 then 1 else 0 end c from t1) t where t.c=1)tt
专业搬砖填坑 2016-03-30
  • 打赏
  • 举报
回复
就是想实现,如果查询出的所有数据都重复时就显示一条,相当于作了一次消除重复数据的处理。如果查询出的数据有一条跟其他数据不重复,就显示所有数据,不做任何消除相同数据处理

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧