首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问大神们一个SQL语句

2012-08-09 
请教大神们一个SQL语句数据表中现有字段:机器号开始时间班次开机时间总和关机时间总和8012012-2-13 18:30:

请教大神们一个SQL语句
数据表中现有字段:

机器号 开始时间 班次 开机时间总和 关机时间总和
801 2012-2-13 18:30:00 甲 5.2 0.3

801 2012-2-14 0:00:03 甲 6.2 0.3

801 2012-2-14 6:30:05 乙 11.6 0.4

801 2012-2-14 18:30:01 甲 5.2 0.3

801 2012-2-15 0:00:03 甲 6.3 0.2

801 2012-2-15 6:30:05 乙 11.6 0.4

801 2012-2-15 18:30:01 甲 6.2 0.3

801 2012-2-16 0:00:03 甲 6.1 0.4

说明:因为数据库中是按照以“天”和“班次”来记录每条记录的,在每次换班和到凌晨0点左右的时候重新产生一条数据。所以每天会有三条记录。
现在我想在查询过程中把以“天”为条件记录去掉,查询出来的结果是只按照班次来分,每天只要两条记录,这两条记录是夸天的。

机器号 开始时间 班次 开机时间总和 关机时间总和
801 2012-2-13 18:30:00 甲 11.4 0.6

801 2012-2-14 6:30:05 乙 11.6 0.4

801 2012-2-14 18:30:01 甲 11.5 0.5

801 2012-2-15 6:30:05 乙 11.6 0.4

801 2012-2-15 18:30:01 甲 12.3 0.7


请教这条SQL语句怎么写



[解决办法]

SQL code
 SELECT * FROM 表名 WHERE CAST(SUBSTRING(CONVERT(CHAR(8),开始时间,108),1,2) AS INT) > 0/**机器号   开始时间             班次  开机时间总和 关机时间总和______________________________________________________________801    2012-02-13 18:30:00.000    甲    5.2    0.3801    2012-02-14 18:30:01.000    甲    5.2    0.3801    2012-02-14 06:30:05.000    乙    11.6    0.4801    2012-02-15 18:30:01.000    甲    6.2    0.3801    2012-02-15 06:30:05.000    乙    11.6    0.4**/
[解决办法]
参考 

SQL code
 with TT as( select ROW_NUMBER() over( order by getdate()) as no,* from TB ) select A.*from TT Awhere no in (select max(no) as no  from TT             where A.班次 = 班次             and A.机器号=机器号             group by convert(varchar(10),开始时间,120) ,班次)                        /*1    801    2012-02-13 18:30:00.000    甲    5.2    0.33    801    2012-02-14 06:30:05.000    乙    11.6    0.44    801    2012-02-14 18:30:01.000    甲    5.2    0.36    801    2012-02-15 06:30:05.000    乙    11.6    0.47    801    2012-02-15 18:30:01.000    甲    6.2    0.38    801    2012-02-16 00:00:03.000    甲    6.1    0.4*/ 

热点排行