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

求SQL2000查询语句解决办法

2013-12-04 
求SQL2000查询语句T1:(消费记录表)EMPIDvhrchar(10) 工号EMPNAME VARCHAR(10)姓名TOLLDATETIME DATETIME消

求SQL2000查询语句
T1:(消费记录表)
EMPID   vhrchar(10) 工号    EMPNAME VARCHAR(10)   姓名   TOLLDATETIME DATETIME  消费时间
00001                          张三                         2013-11-10  18:30:30
00002                          李四                         2013-11-09  11:55:20
00003                          王五                         2013-11-08  22:20:25
00004                          赵六                         2013-11-08  07:30:21   
T2:(餐次表)
TOLLNAME   VARCHAR(10)餐次名称  STARTTIME  VARCHAR(5)开始时间  ENDTIME  VARCHAR(5) 结束时间
早餐                              07:00                               08:30    
午餐                              10:30                               12:00
晚餐                              17:00                               20:00



要求:输出如下格式

EMPID          姓名      TOLLDATETIME              餐次类型
00004          赵六      2013-11-08  07:30:21     早餐
00001          张三      2013-11-10  18:30:30     晚餐
00002          李四      2013-11-09  11:55:20     午餐
00003          王五      2013-11-08  22:20:25     其他时段

求教高手SQL语句,由于餐次表中开始和结束时间可能会做一定变动,所以请不要在SQL语句中指定类似 between 07:30 and 08:30这种写法

[解决办法]

----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-12-02 15:31:44
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
--    Dec 28 2012 20:23:12 
--    Copyright (c) Microsoft Corporation
--    Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[T1]
if object_id('[T1]') is not null drop table [T1]
go 
create table [T1]([EMPID] varchar(5),[EMPNAME] varchar(4),[TOLLDATETIME] datetime)
insert [T1]
select '00001','张三','2013-11-10 18:30:30' union all
select '00002','李四','2013-11-09 11:55:20' union all
select '00003','王五','2013-11-08 22:20:25' union all


select '00004','赵六','2013-11-08 07:30:21'
--> 测试数据:[T2]
if object_id('[T2]') is not null drop table [T2]
go 
create table [T2]([TOLLNAME] varchar(4),[STARTTIME] VARCHAR(5) ,[ENDTIME] VARCHAR(5) )
insert [T2]
select '早餐','07:00','08:30' union all
select '午餐','10:30','12:00' union all
select '晚餐','17:00','20:00'
--------------开始查询--------------------------
 
 
select t1.*,CASE WHEN t2.tollname IS NULL THEN '其他时段' ELSE  t2.tollname END 餐次类型
from [T1] left JOIN [t2] on CONVERT(VARCHAR(5),t1.[TOLLDATETIME],108) BETWEEN CONVERT(VARCHAR(5),[t2].[STARTTIME]) AND CONVERT(VARCHAR(5),[t2].[ENDTIME])
----------------结果----------------------------
/* 
EMPID EMPNAME TOLLDATETIME            餐次类型
----- ------- ----------------------- --------
00001 张三      2013-11-10 18:30:30.000 晚餐
00002 李四      2013-11-09 11:55:20.000 午餐
00003 王五      2013-11-08 22:20:25.000 其他时段
00004 赵六      2013-11-08 07:30:21.000 早餐

 
*/

热点排行