导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

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


希望各位达人帮我解决,小弟感激不尽
...全文
99 点赞 收藏 6
写回复
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]
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告