表1结构如下:
runid prcsid use_id prcs_time flow_id
231 1 45467 2011-09-14 15:47:00 1
231 2 67676 2011-09-14 16:35:12 1
231 3 45454 2011-11-07 11:06:57 1
235 1 45467 2011-11-14 3
235 2 67376 2011-11-14 16:35:12 3
235 3 45554 2011-11-07 11:06:57 3
235 4 45454 2011-11-07 3
238 1 45454 2011-11-07 11:06:27 6
239 1 35467 2011-10-14 15:47:00 6
239 2 67376 2011-11-14 16:35:12 6
239 3 46554 2011-11-07 11:06:57 6
239 4 46454 2011-11-07 11:06:57 6
239 5 25454 2011-11-07 11:06:57 6
236 1 35467 2011-11-17 15:47:00 7
236 2 67376 2011-11-19 16:35:12 7
236 3 46d54 2011-11-20 11:06:57 7
236 4 46c54 2011-11-21 11:06:57 7
236 5 25454 2011-11-22 11:06:57 7
266 1 25654 2011-11-22 16:06:57 8
996 1 35467 2011-01-17 15:47:00 3
996 2 67376 2011-11-19 16:35:12 3
我想查找出prcs_time在11月1日到11月30日之间的数据并且prcsid字段为1那行数据的prcs_time列也必须为11月份的那组数据,并且我还想把prcsid列单独为1出现的数据全部过滤掉,即过滤掉非重复runid列数据,而且还过滤掉prcs_time为空的那组(相同runid号)数据,并且我还想判断flow_id为:1,3,6判断为上海,flow_id为7,8判断为北京结果如下:runid prcsid use_id prcs_time 区域
236 1 35467 2011-11-17 15:47:00 北京
236 2 67376 2011-11-19 16:35:12 北京
236 3 46d54 2011-11-20 11:06:57 北京
236 4 46c54 2011-11-21 11:06:57 北京
236 5 25454 2011-11-22 11:06:57 北京
996 1 35467 2011-01-17 15:47:00 上海
996 2 67376 2011-11-19 16:35:12 上海
runid prcsid use_id prcs_time flow_id
231 1 45467 2011-09-14 15:47:00 1
231 2 67676 2011-09-14 16:35:12 1
231 3 45454 2011-11-07 11:06:57 1
235 1 45467 2011-11-14 3
235 2 67376 2011-11-14 16:35:12 3
235 3 45554 2011-11-07 11:06:57 3
235 4 45454 2011-11-07 3
238 1 45454 2011-11-07 11:06:27 6
239 1 35467 2011-10-14 15:47:00 6
239 2 67376 2011-11-14 16:35:12 6
239 3 46554 2011-11-07 11:06:57 6
239 4 46454 2011-11-07 11:06:57 6
239 5 25454 2011-11-07 11:06:57 6
236 1 35467 2011-11-17 15:47:00 7
236 2 67376 2011-11-19 16:35:12 7
236 3 46d54 2011-11-20 11:06:57 7
236 4 46c54 2011-11-21 11:06:57 7
236 5 25454 2011-11-22 11:06:57 7
266 1 25654 2011-11-22 16:06:57 8
996 1 35467 2011-01-17 15:47:00 3
996 2 67376 2011-11-19 16:35:12 3
我想查找出prcs_time在11月1日到11月30日之间的数据并且prcsid字段为1那行数据的prcs_time列也必须为11月份的那组数据,并且我还想把prcsid列单独为1出现的数据全部过滤掉,即过滤掉非重复runid列数据,而且还过滤掉prcs_time为空的那组(相同runid号)数据,并且我还想判断flow_id为:1,3,6判断为上海,flow_id为7,8判断为北京结果如下:runid prcsid use_id prcs_time 区域
236 1 35467 2011-11-17 15:47:00 北京
236 2 67376 2011-11-19 16:35:12 北京
236 3 46d54 2011-11-20 11:06:57 北京
236 4 46c54 2011-11-21 11:06:57 北京
236 5 25454 2011-11-22 11:06:57 北京
996 1 35467 2011-01-17 15:47:00 上海
996 2 67376 2011-11-19 16:35:12 上海
解决方案 »
- mysql关于插入语句问题
- mysql bigint 插入溢出问题
- 这条SQL语句如何写?急……
- 还是上午那个sql语句问题
- 有谁清楚 像百度 那样的西文系统 怎样实现关键字 分割 和查询
- 请问如何在mysql中创建一个表,其中包含一个使用当前时间的列?在线等待。。。
- 如何把mysql作为windows的服务?
- phpmyadmin导入CSV时报错Invalid parameter for CSV import转义字段的字符
- 关于Mysql间隔查询问题
- mysql5.6或者5.5 chm文档 哪里有下载
- mysql自动增长字段auto_increment 如何设置增长的长度,语句应该怎样写?
- 请教一个触发器的问题
go
--> -->
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([runid] int,[prcsid] int,[use_id] nvarchar(5),[prcs_time] Datetime,[flow_id] int)
Insert #T
select 231,1,N'45467','2011-09-14 15:47:00',1 union all
select 231,2,N'67676','2011-09-14 16:35:12',1 union all
select 231,3,N'45454','2011-11-07 11:06:57',1 union all
select 235,1,N'45467','2011-11-14',3 union all
select 235,2,N'67376','2011-11-14 16:35:12',3 union all
select 235,3,N'45554','2011-11-07 11:06:57',3 union all
select 235,4,N'45454','2011-11-07',3 union all
select 238,1,N'45454','2011-11-07 11:06:27',6 union all
select 239,1,N'35467','2011-10-14 15:47:00',6 union all
select 239,2,N'67376','2011-11-14 16:35:12',6 union all
select 239,3,N'46554','2011-11-07 11:06:57',6 union all
select 239,4,N'46454','2011-11-07 11:06:57',6 union all
select 239,5,N'25454','2011-11-07 11:06:57',6 union all
select 236,1,N'35467','2011-11-17 15:47:00',7 union all
select 236,2,N'67376','2011-11-19 16:35:12',7 union all
select 236,3,N'46d54','2011-11-20 11:06:57',7 union all
select 236,4,N'46c54','2011-11-21 11:06:57',7 union all
select 236,5,N'25454','2011-11-22 11:06:57',7 union all
select 266,1,N'25654','2011-11-22 16:06:57',8 union all
select 996,1,N'35467','2011-11-17 15:47:00',3 union all
select 996,2,N'67376','2011-11-19 16:35:12',3
Go
Select *,case when [flow_id] in(1,3,6) then N'上海' when [flow_id] in(7,8) then N'北京' end as 区域
from #T AS a
WHERE
EXISTS(
SELECT 1 FROM #T AS b WHERE [runid]=a.[runid] AND [prcs_time]>='2011-11-01' AND [prcs_time]<'2011-12-01'
AND NOT EXISTS(SELECT 1 FROM #T WHERE [runid]=b.[runid] AND CONVERT(VARCHAR(8),[prcs_time],8)='00:00:00')
HAVING MAX([prcsid])<>MIN([prcsid]) AND MIN([prcsid])=1
)
/*
runid prcsid use_id prcs_time flow_id 区域
236 1 35467 2011-11-17 15:47:00.000 7 北京
236 2 67376 2011-11-19 16:35:12.000 7 北京
236 3 46d54 2011-11-20 11:06:57.000 7 北京
236 4 46c54 2011-11-21 11:06:57.000 7 北京
236 5 25454 2011-11-22 11:06:57.000 7 北京
996 1 35467 2011-11-17 15:47:00.000 3 上海
996 2 67376 2011-11-19 16:35:12.000 3 上海
*/
原始表是这样的:
231 1 45467 2011-09-14 15:47:00 1
231 2 67676 2011-09-14 16:35:12 1
231 3 45454 2011-11-07 11:06:57 1
235 1 45467 3
235 2 67376 2011-11-14 16:35:12 3
235 3 45554 2011-11-07 11:06:57 3
235 4 45454 3
238 1 45454 2011-11-07 11:06:27 6
239 1 35467 2011-10-14 15:47:00 6
239 2 67376 2011-11-14 16:35:12 6
239 3 46554 2011-11-07 11:06:57 6
239 4 46454 2011-11-07 11:06:57 6
239 5 25454 2011-11-07 11:06:57 6
236 1 35467 2011-11-17 15:47:00 7
236 2 67376 2011-11-19 16:35:12 7
236 3 46d54 2011-11-20 11:06:57 7
236 4 46c54 2011-11-21 11:06:57 7
236 5 25454 2011-11-22 11:06:57 7
266 1 25654 2011-11-22 16:06:57 8
996 1 35467 2011-01-17 15:47:00 3
996 2 67376 2011-11-19 16:35:12 3
from #T AS a
WHERE
EXISTS(
SELECT 1 FROM #T AS b WHERE [runid]=a.[runid] AND [prcs_time]>='2011-11-01' AND [prcs_time]<'2011-12-01'
AND NOT EXISTS(SELECT 1 FROM #T WHERE [runid]=b.[runid] AND [prcs_time] IS null)
HAVING MAX([prcsid])<>MIN([prcsid]) AND MIN([prcsid])=1
)這樣就行了
再加一组数据后测试,不对
runid prcsid use_id prcs_time flow_id
231 1 45467 2011-09-14 15:47:00 1
231 2 67676 2011-09-14 16:35:12 1
231 3 45454 2011-11-07 11:06:57 1
235 1 45467 2011-11-14 3
235 2 67376 2011-11-14 16:35:12 3
235 3 45554 2011-11-07 11:06:57 3
235 4 45454 2011-11-07 3
238 1 45454 2011-11-07 11:06:27 6
239 1 35467 2011-10-14 15:47:00 6
239 2 67376 2011-11-14 16:35:12 6
239 3 46554 2011-11-07 11:06:57 6
239 4 46454 2011-11-07 11:06:57 6
239 5 25454 2011-11-07 11:06:57 6
236 1 35467 2011-11-17 15:47:00 7
236 2 67376 2011-11-19 16:35:12 7
236 3 46d54 2011-11-20 11:06:57 7
236 4 46c54 2011-11-21 11:06:57 7
236 5 25454 2011-11-22 11:06:57 7
266 1 25654 2011-11-22 16:06:57 8
996 1 35467 2011-01-17 15:47:00 3
996 2 67376 2011-11-19 16:35:12 3
555 1 25654 2011-11-22 16:06:57 7
555 2 35467 2011-01-17 15:47:00 7
555 3 7376 null 16:35:12 7