sql查询,表里不同数据的合并

g394594141 2010-05-10 05:11:02
请各位达人帮我解决下下面这个问题,谢谢

下载有这么一个表Table,里面有三个字段Dtime,Name, State,有数据是下面的形式

Dtime Name State

2008-07-16 10:00:00.000 应用1 1
2008-07-16 10:00:00.000 应用2 0
2008-07-16 10:00:00.000 应用2 1

后面两条的Dtime和Name相同


这种结构的数据,可不可以一个sql实现 如果Dtime和Name相同,其中State有为0的,那查出来的结果就只有0那条数据。
换个说法就是如果同一Dtime和Name里有0的数据,就查出0数据来,1那条舍掉。
State是bool行,只能为0,1

数据实现结果是这种情况

2008-07-16 10:00:00.000 应用1 1
2008-07-16 10:00:00.000 应用2 0


希望各位达人帮我解决,小弟感激不尽
...全文
216 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
taoyuanjsj 2010-05-10
  • 打赏
  • 举报
回复

DECLARE @Table table(Dtime datetime,[name] nvarchar(200),state bit )

insert into @Table select '2008-07-16 10:00:00.000','应用1',1
insert into @Table select '2008-07-16 10:00:00.000','应用2',0
insert into @Table select '2008-07-16 10:00:00.000','应用2',1

--select * from @table

select Dtime,[name],min(case state when 0 then 0 else 1 end) as state from @table group by dtime,[name]
永生天地 2010-05-10
  • 打赏
  • 举报
回复
select * from 表Table
where State=0
or (State=1 and not exists(select 1 from 表Table t where t.Dtime=Dtime and t.Name =Name and State=0)
g394594141 2010-05-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 htl258 的回复:]
引用 2 楼 g394594141 的回复:
引用 1 楼 guguda2008 的回复:
SQL code
SELECT DTIME,[NAME],MIN(STATE)
FROM [TABLE]
GROUP BY DTIME,[NAME]


谢谢这位帅哥,只是我那是bit行,不能直接用MIN
为什么不能用
[/Quote]

因为是bit型,需先转换成int行
htl258_Tony 2010-05-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 g394594141 的回复:]
引用 1 楼 guguda2008 的回复:
SQL code
SELECT DTIME,[NAME],MIN(STATE)
FROM [TABLE]
GROUP BY DTIME,[NAME]


谢谢这位帅哥,只是我那是bit行,不能直接用MIN
[/Quote]为什么不能用
g394594141 2010-05-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 guguda2008 的回复:]
SQL code
SELECT DTIME,[NAME],MIN(STATE)
FROM [TABLE]
GROUP BY DTIME,[NAME]
[/Quote]

谢谢这位帅哥,只是我那是bit行,不能直接用MIN
guguda2008 2010-05-10
  • 打赏
  • 举报
回复
SELECT DTIME,[NAME],MIN(STATE)
FROM [TABLE]
GROUP BY DTIME,[NAME]

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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