sqlserver A字段相同的多条记录 取B字段等于某个值的记录 怎么写sql

例如:表1A---B1Null24253Null35通过sql想选出1Null2535请大神帮忙!这里是取B字段等5的... 例如: 表1
A --- B
1 Null
2 4
2 5
3 Null
3 5
通过sql想选出
1 Null
2 5
3 5
请大神帮忙!
这里是取B字段等5的
展开
 我来答
SQL的艺术
2017-03-01 · SQL写多了就会在追求极致
SQL的艺术
采纳数:2040 获赞数:3323

向TA提问 私信TA
展开全部
select
    A,
    case when isnull(max(b),0)>0 when max(b) else null end b
from
    表1
group by
    A
追问
不是取B字段最大的 是取B字段等于某个字段的  不一定是最大的  
实际的A、B字段都是uniqueidentifier类型的 这里举例的都是数字
追答
那是你示例数据和结果数据写的有问题,
请正确描述其需求
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
玩转数据处理
2017-03-01 · 数据处理,Python,dotnet
玩转数据处理
采纳数:1613 获赞数:3794

向TA提问 私信TA
展开全部
1 Null 为什么也要选出来?
直接
select A,B from 表1 where B = 5
不行?
更多追问追答
追问
这个表里边的都要选出来  
A字段有重复的只选B字段等于5的出来
没有1 5的话 1 Null就要选出来
追答
create  table #baseData  (
A int,
B varchar(50)
)

insert into #baseData values (1, Null)
insert into #baseData values (2, 4)
insert into #baseData values (2, 5)
insert into #baseData values (3, Null)
insert into #baseData values (3, 5)

;with table1 as(
select A from #baseData group by A having COUNT(A)>1)

select * from #baseData where A not in (select A from table1)
union all
select * from #baseData where A in (select A from table1) and B = 5

drop table #baseData
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
798跳转
2017-03-01 · 超过26用户采纳过TA的回答
知道答主
回答量:133
采纳率:0%
帮助的人:51.6万
展开全部
select * from 表1 where A not in(select A from 表1 where B ='5') UNION (select * from 表1 where B ='5')
兄弟看看是这么个意思不?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-03-01
展开全部
那如果不是 1 null 是1 4,1 4是不是也要选出来?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式