猿问

sql server查询昨天,今天,本周,本月的数据,急急急

create table LeaveInfo
(
Lid int primary key identity(1,1),
StuNum nvarchar(50) not null,--学号,
StuName nvarchar(50) not null,--姓名
Phone nvarchar(30) not null,--手机号
GNum nvarchar(20) not null,--级别
CName nvarchar(20) not null,--班级
BeginDate date not null,--开始时间
EndDate date not null,--结束时间
Addresss nvarchar(50) not null,--地点
Reason nvarchar(200) not null,--原因
Principal nvarchar(10) not null,--负责人
Statu int ,--状态
)

上面是数据表,怎么编写sql语句实现像下图的功能,急急急急!


繁星点点滴滴
浏览 1258回答 1
1回答

慕标琳琳

SELECT&nbsp;A.CName&nbsp;AS&nbsp;班级名称,&nbsp;A.GNum&nbsp;AS&nbsp;年级, &nbsp;&nbsp;&nbsp;&nbsp;(SELECT&nbsp;COUNT(*)&nbsp;FROM&nbsp;[dbo].[LeaveInfo]&nbsp;AS&nbsp;B&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;B.CName&nbsp;=&nbsp;A.CName&nbsp;AND&nbsp;B.GNum&nbsp;=&nbsp;A.GNum&nbsp;AND&nbsp;B.[Statu]&nbsp;=&nbsp;1&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;B.BeginDate&nbsp;>=&nbsp;DATEADD(DD,DATEDIFF(DD,0,GETDATE()),0)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;B.EndDate&nbsp;<&nbsp;DATEADD(DD,DATEDIFF(DD,0,GETDATE()),1))&nbsp;AS&nbsp;今日请假, &nbsp;&nbsp;&nbsp;&nbsp;(SELECT&nbsp;COUNT(*)&nbsp;FROM&nbsp;[dbo].[LeaveInfo]&nbsp;AS&nbsp;B&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;B.CName&nbsp;=&nbsp;A.CName&nbsp;AND&nbsp;B.GNum&nbsp;=&nbsp;A.GNum&nbsp;AND&nbsp;B.[Statu]&nbsp;=&nbsp;1&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;B.BeginDate&nbsp;>=&nbsp;DATEADD(DD,DATEDIFF(DD,0,GETDATE()),-1)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;B.EndDate&nbsp;<&nbsp;DATEADD(DD,DATEDIFF(DD,0,GETDATE()),0))&nbsp;AS&nbsp;昨日请假, &nbsp;&nbsp;&nbsp;&nbsp;(SELECT&nbsp;COUNT(*)&nbsp;FROM&nbsp;[dbo].[LeaveInfo]&nbsp;AS&nbsp;B&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;B.CName&nbsp;=&nbsp;A.CName&nbsp;AND&nbsp;B.GNum&nbsp;=&nbsp;A.GNum&nbsp;AND&nbsp;B.[Statu]&nbsp;=&nbsp;1&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;B.BeginDate&nbsp;>=&nbsp;DATEADD(WK,DATEDIFF(WK,0,GETDATE()),0)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;B.EndDate&nbsp;<&nbsp;DATEADD(WK,DATEDIFF(WK,0,GETDATE()),7))&nbsp;AS&nbsp;本周请假, &nbsp;&nbsp;&nbsp;&nbsp;(SELECT&nbsp;COUNT(*)&nbsp;FROM&nbsp;[dbo].[LeaveInfo]&nbsp;AS&nbsp;B&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;B.CName&nbsp;=&nbsp;A.CName&nbsp;AND&nbsp;B.GNum&nbsp;=&nbsp;A.GNum&nbsp;AND&nbsp;B.[Statu]&nbsp;=&nbsp;1&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;B.BeginDate&nbsp;>=&nbsp;DATEADD(MM,DATEDIFF(MM,0,GETDATE()),0)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;B.EndDate&nbsp;<&nbsp;DATEADD(MM,DATEDIFF(MM,0,GETDATE())&nbsp;+&nbsp;1,0))&nbsp;AS&nbsp;本月请假FROM&nbsp;[dbo].[LeaveInfo]&nbsp;AS&nbsp;A&nbsp; GROUP&nbsp;BY&nbsp;A.CName,&nbsp;A.GNum
随时随地看视频慕课网APP

相关分类

SQL Server
我要回答