SQL Sever 学习系列之一

本学习系列,从实际工作需要中积累,对于一个新手而言,写出几条漂亮的查询语句,应该是可以受启发的。

一、问题的需求是:员工薪酬发放,现有资金能发放多少人,哪些人应得?

     /*所有的记录,从头开始累加,直到累加值大于一个给定值以后,返回之前计入累加的记录*/

先建立相关职工薪酬表,添加测试数据:

create table Table_1
(
id int identity not null primary key,
name char(10),
je decimal(8,2),
date datetime
) insert into Table_1 values('张三',200,GETDATE())
insert into Table_1 values('李四',100,GETDATE())
insert into Table_1 values('王五',270,GETDATE())
insert into Table_1 values('张小三',400,GETDATE())
insert into Table_1 values('李四往',180,GETDATE())
insert into Table_1 values('王小五',910,GETDATE()) select * from Table_1

结果如下:

注:列(je)为员工应得薪酬,先假定老板只有现金400元,看看能发多少人,哪些人可以领取?

解决方案如下:

declare @i int,@sum1 decimal(8,2),@sum2 decimal(8,2)
set @i=1
set @sum2=400
set @sum1=0
while @i<(select max(id) from Table_1)
begin
set @sum1=@sum1+(select je from Table_1 where id=@i)
if @sum2<@sum1
begin
break
end
set @i=@i+1
end
select * from Table_1 where id<@i

结果如下:

此方法比较简单,还可以用储存过程实现。(读者可以试试)

二、sql server 2005中如何查询一个数据库中有多少张表?

--查询当前数据库下所有用户建立的表

SELECT name
,xtype
,status
,crdate
,userstat
,sysstat
,refdate
,version
FROM sysobjects WHERE xtype = 'U'
   其中:
xtype char(2) 对象类型。可以是下列对象类型中的一种:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
UQ = UNIQUE 约束(类型是 K)
V = 视图
X = 扩展存储过程

结果如图:

三、(1)查找一个数据库或表中所含的字段

代码如下:

 --zjm表的字段名称
select name
,xtype
,typestat
,length
,status
,type
,usertype from syscolumns where id=object_id( 'zjm') --zjm表的字段数
select count(name) 表的字段数 from syscolumns where id=object_id( 'zjm')

结果如下:

(2)在一个库中寻找一个字段归属的数据表

select b.name '表名称'
,a.xtype
,a.typestat
,a.xusertype
,a.language
,a.length
,b.crdate
from syscolumns a
inner join sysobjects b on a.id=b.id and b.xtype='U' and a.name='name'

结果如下:

SQL Sever 学习系列之一的更多相关文章

  1. SQL Sever 学习系列之三

    SQL Sever 学习系列之三 SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题)         五.经理今天刚谈到with的用法(with的 ...

  2. SQL Sever 学习系列之二

    SQL Sever 学习系列之二 SQL Server 学习系列之一(薪酬方案+基础) 四.有关时间输出问题      select GETDATE() 日期时间    ----显示为:2013-07 ...

  3. SQL Server 学习系列之六

    SQL Server 学习系列之六 SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL 关键字) SQ ...

  4. SQL Server 学习系列之五

    SQL Server 学习系列之五 SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL 关键字) SQ ...

  5. SQL Server 学习系列之四(SQL 内幕)

    SQL Server 学习系列之四(SQL 内幕) SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL ...

  6. 【SQL Server 学习系列】-- sql 随机生成中文名字

    原文:[SQL Server 学习系列]-- sql 随机生成中文名字 ,) )) -- 姓氏 ,) )) -- 名字 INSERT @fName VALUES ('赵'),('钱'),('孙'),( ...

  7. SQL sever 学习,2016,5,31,(重点:100行以后,字符串操作。)

    --别名和表达式select OrderDate,YEAR(OrderDate)as 订单年份from orders; --选择select OrderDate,YEAR(OrderDate)as 订 ...

  8. SQL数据库学习系列之一

    数据库知识的重要性不言而喻,以下链接给出了最最基础知识的讲解. 第一讲:SQL 语法 第二讲:SQL SELECT 语句 第三讲:SELECT DISTINCT 语句 第四讲:SQL WHERE 子句 ...

  9. 【SQL Server 学习系列】-- 清除SQL Server 2012连接过的服务器名称

    需要删除两个地方,删除前请注意备份! 1.  %AppData%\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin 2.  %A ...

随机推荐

  1. 键盘没有Home键和End键的完美解决办法

    最近新入手一个笔记本,发现键盘没有Home/End,这两个键虽然不是必用,但也是用顺手了,特别是选择一行,到行首,行尾的时候甚是方便 作为一枚程序员,怎么能够妥协? 于是开始研究 方案一 通过观察笔记 ...

  2. String和StringBufffer的区别

    string的字符串操作都是废弃已有的对象,开辟一个新的内存空间创建一个新的对象 比如一个string str= "字符串"; str += "a"; 这样的操 ...

  3. time_t、pthread_t

    1.time_t实际上就是长整型long int;用来保存从1970年1月1日0时0分0秒到现在时刻的秒数!用time()这个函数获取! #ifndef __TIME_T #define __TIME ...

  4. 如何修改windows系统远程桌面默认端口

    此文档概述如何修改windows系统远程桌面的默认端口,众所周知windows系统默认的远程桌面端口是3389,这样对于开启远程桌面的计算机有一定的安全威胁,修改远程桌面的默认端口可以提高系统的安全性 ...

  5. MySQL锁机制和PHP锁机制

    模拟准备--如何模拟高并发访问一个脚本:apache安装文件的bin/ab.exe可以模拟并发量 -c 模拟多少并发量 -n 一共请求多少次 http://请求的脚本例如:cmd: apache安装路 ...

  6. STL中一些函数的应用

    1.nth_element():找到第几大的数.用法:nth_element(a,a+k,a+n),返回一个数组a中第k大的数,时间复杂度比较小,头文件#include <algorithm&g ...

  7. 解析远程域名主机的IP地址

    我们知道,计算机在访问远程主机的时候,本质上是通过IP地址来进行访问的,但我们实际在使用的时候,例如我们想访问百度的主页,我们是通过在浏览器的地址栏输入百度的域名来进行访问的,因此,计算机需要将百度的 ...

  8. php+JS进度条

    <?phpini_set('max_execution_time','0');//设置本页面加载时间无限制 echo "<div style='border: 1px solid ...

  9. vc 改变控制台字符颜色

    #include <Windows.h> #include <stdio.h> #include <iostream> using namespace std; i ...

  10. hdu 5877 Weak Pair dfs序+树状数组+离散化

    Weak Pair Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Prob ...