一键排班软件开发用到的sql语句
1.查询表中某个字段值重复出现两次以上
select distinct 字段 from 表 where 字段 in (select 字段 from 表 group by 字段 having count(1)>1)
2.把查询结果当做一个表来查询
select * from (select sum(id) as sunNum from people) as tempTable
3.将查询出的记录插入到另一张表中
插入新表(会在数据库中生成):
select 目标列 into 新表 from 旧表 where 条件
插入到已存在的表:
insert into 插入的表名 select 目标列 from 表名 where 条件
4.随机取n条数据
select top 10 from 表 where 条件 order by NEWID()
说明:NEWID()在扫描每条记录的时候都生成一个值,而生成的值是随机的,没有大小顺序,所以最终结果再按这个排序,排序结果当然就是无序的了
5. 判断数据库中是否存在某张表
select count(1) from syscolumns where [id]=object_id('表名称')
结果等于0就是没有,大于0就是有
6.查询结果的连接Union、相减Except
(select nameA from preduty where (week='星期一' or week='星期三' or week='星期五' or
week ='星期六') and (mix='true'))
union
(
select nameA from preduty where (mix='ffalse') and
(week='星期一' or week='星期三' or week='星期五' or week ='星期六')
)
union
(
select nameB from preduty where (mix='ffalse') and
(week='星期一' or week='星期三' or week='星期五' or week ='星期六'))
)
except
(
select nameA from tableThursday
)
7.添加新字段
alter table tableThursday add xvhao int identity(1,1) primary key
8.给个起始日期,日期在起始日期的基础上每天加1,依次插入到表中某列
ALTER PROCEDURE [dbo].[InsertNowDate]
@startdate dateASdeclare @countDay int
set @countDay =1
while(@countDay<=32)BEGINupdate nowdutysheet set dutydate=(CONVERT(date,@startdate,102))
where nowid=@countDayset @startdate=DATEADD(DAY,1,@startdate)
set @countDay=@countDay+1END
9.在新值班表中填充每个人的电话,从基础表获得信息
ALTER PROCEDURE [dbo].[InsertPhoneAB]ASdeclare @countDay int
declare @stuNameA nchar(8)
declare @stuNameB nchar(8)set @countDay =1
while(@countDay<=32)BEGINset @stuNameA=(select top 1 nameA from nowdutysheet where phoneA is null order by nowid)update nowdutysheet set phoneA=(select phone from people where name=@stuNameA) where nameA=@stuNameAset @stuNameB=(select top 1 nameB from nowdutysheet where phoneB is null order by nowid)update nowdutysheet set phoneB=(select phone from people where name=@stuNameB) where nameB=@stuNameBset @countDay=@countDay+1END
10.重置操作,删除数据库中所有没有用的生成表
ALTER PROCEDURE [dbo].[ReDo]AS
BEGINif (select count(1) from syscolumns where [id]=object_id( 'tableThursday' ))>0
drop table dbo.tableThursday
if (select count(1) from syscolumns where [id]=object_id( 'tableTuesSun' ))>0
drop table dbo.tableTuesSun
if (select count(1) from syscolumns where [id]=object_id( 'tablecommon' ))>0
drop table dbo.tablecommon
if (select count(1) from syscolumns where [id]=object_id( 'temptableA' ))>0
drop table dbo.temptableA
truncate table nowdutysheet
update nowdutysheet set dutydate =null
if (select count(1) from syscolumns where [id]=object_id( 'tableMale' ))>0
drop table tableMale
if (select count(1) from syscolumns where [id]=object_id( 'ThursMale' ))>0
drop table ThursMaleEND
11.从表中随机获取一名同学到新值班表
--从tableTuesSun中随机获取一名女生
ALTER procedure [dbo].[SelectOneCommon]
asbegin
declare @stuName nvarchar(4)
declare @weekIndex int
set @weekIndex=(select min(nowid) from nowdutysheet where (week='星期一' or
week='星期三' or week ='星期五' or week='星期六' ) and ( nameA is null))
--随机选取一名周一/三/五/六值班的
set @stuName=(select top 1 nameA from tablecommon where herstate='1'order by NEWID())
--状态置0,下次不再取
update tablecommon set herstate='0',choosetime=GETDATE() where nameA=@stuName
update nowdutysheet set nameA =@stuName where nowid=@weekIndexend
12.在曹教授的帮助下,写的给个起始星期X,向下自动填充星期
存储过程:
ALTER PROCEDURE [dbo].[GetWeek]
@StartWeek int
as
declare @mycount int
declare @thisWeek int
declare @countDay int
set @countDay=1
set @mycount=@StartWeek
while(@countDay<=32)
beginset @thisWeek=(@mycount+7)%7insert into nowdutysheet(week) values(dbo.GetWeekFunction(@thisWeek))set @mycount=@mycount+1set @countDay=@countDay +1
end
标量值函数:
ALTER function [dbo].[GetWeekFunction](@weekindex int)
returns nvarchar(4)
as
begin declare @myWeekName nvarchar(4)if(@weekindex=1)beginset @myWeekName='星期一'return @myWeekNameendif(@weekindex=2)beginset @myWeekName='星期二';return @myWeekName;endif(@weekindex=3)beginset @myWeekName='星期三';return @myWeekName;endif(@weekindex=4)beginset @myWeekName='星期四';return @myWeekName;endif(@weekindex=5)beginset @myWeekName='星期五';return @myWeekName;endif(@weekindex=6)beginset @myWeekName='星期六'return @myWeekNameendif(@weekindex=0)beginset @myWeekName='星期日'return @myWeekNameendreturn @myWeekName
end
一键排班软件开发用到的sql语句相关推荐
- C# winform 编写一键排班软件遇到的程序问题
下面咱们看图说话: 1.规范输入.系统默认应输入"星期X",如果用户输入特殊字符@#¥%!或其他字符,在这里会给个提醒,同时限制只能输入三个字符 string str = txtW ...
- C# winform 编写一键排班软件时遇到的问题
问题鱼贯而出,防不胜防,下面把一些比较有意思的东西分享给大家: 1.设置窗体的默认按钮 this.AcceptButton=你的按钮名; 2.程序退出的方法 3.窗体加载时,文本框不全选内容 text ...
- cnc程序串连软件哪个好用_排班软件哪个好用?
排班是许多企业的一项日常管理工作,对于大部分企业员工来说,他们的工作时间是固定的,但还有一部分员工由于他所在行业和工作性质的原因,工作时间不固定,这时就需要一套公平.合理的排班软件,不仅能调动员工积极 ...
- 排班源码,排班软件源码,排班系统源码,java,php,asp,asp.net,c#,python通用
先上最后成品图: 可以按月按周进行排班 支持拖拉排班,效率十分高效 开工,准备物料: daypilot-all.min.js绿色版 我语言用的是php,因为是独立原生版本,代码看起来很简洁高效,开发起 ...
- 餐厅员工排班软件市场现状研究分析报告-
辰宇信息咨询市场调研公司最近发布-<2022-2028中国餐厅员工排班软件市场现状研究分析与发展前景预测报告> 内容摘要 本文研究中国市场餐厅员工排班软件现状及未来发展趋势,侧重分析在中国 ...
- php人员排班程序,人员排班软件操作步骤
人员排班软件操作步骤: Section1:增加时间段,时间段主要是设置一个时段,并将其安排个一个周期里面的一天,例如将周一到周五的上班时间设为早上8点到晚上5点,周六为早上9点到下午四点 1. 用户进 ...
- 2022-2028全球与中国餐厅员工排班软件市场现状及未来发展趋势
辰宇信息咨询市场调研公司最近发布-<2022-2028全球与中国餐厅员工排班软件市场调研报告> 内容摘要 本文重点分析在全球及中国有重要角色的企业,分析这些企业餐厅员工排班软件产品的市场规 ...
- php实现一键分班,学生一键分班软件下载
可各分段,各名次段,各科分数,及多份成绩完美均衡的全衡分班软件(单机版).网址:www.quan-heng1.com 1. 各科的任意分数段.任意名次段的人数的均衡,如优秀.良.差.10-20分.10 ...
- 在程序开发中怎样写SQL语句可以提高数据库的性能
1.首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个10万条记录的表中查1条记录 ...
最新文章
- python创建scrapy_Python爬虫教程-31-创建 Scrapy 爬虫框架项目
- 转:纯CSS实现“鼠标移过显示层”效果
- CentOS 6.5编译安装Nginx+MySQL+PHP
- Unity3D ShaderLab 内发光防护罩
- vue 简介 vue 项目
- nginx php access denied,LNMP 解决Access Denied错误详细介绍
- 代理模式、动态代理及其应用
- hbase动态更改行键设计_谈笑间学会Hbase Rowkey设计
- 实现一个闹钟_iPhone 闹钟停止时,如何自动播放你喜欢的音乐
- Dekker互斥算法解析
- 【转】Content-type的几种常见类型
- leetcode1037 有效的回旋镖(Java练习)
- 【雷达与对抗】【2004.05】合成孔径雷达X波段发射机和频率分配单元的设计与实现
- Hermite(埃尔米特)插值法 | 插值多项式+ 插值余项
- 工业物联网IoT平台建设方案
- 明星志愿3入门经典教程
- FPGADesigner《FPGA数字信号处理系列》目录与传送门
- 【微积分易错点总结】函数、极限和连续
- IQ 智力题 有答案
- android平台应用GPIO模拟IR控制车载DTV