重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
----新建登录角色用户:
站在用户的角度思考问题,与客户深入沟通,找到朔州网站设计与朔州网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:做网站、网站设计、企业官网、英文网站、手机端网站、网站推广、国际域名空间、网站空间、企业邮箱。业务覆盖朔州地区。
use master
exec sp_addlogin 'lx','123',['pubs']--新建登录lx,密码123, [默认数据库pubs]
use pubs
go
exec sp_grantdbaccess 'lx','slx'--为pubs添加一个用户(角色为public)
exec sp_addrolemember db_owner ,slx--将slx添加到db_owner角色组
# 注:可合并做一步 :
use pubs
exec sp_adduser lx,slx,db_owner
----------另外可以搞一个sa这样的牛逼账户,权限很高,你自己测试吧
exec sp_addsrvrolemember 'lx','sysadmin'--以sa登录执行,添加登录lx到system administrators中
select a.tid,b.name,b.number,b.title ,COUNT(a.tid) AS Nb
from stu a, tea b
where b.number=a.tnum and b.number like "3%";
GROUP BY a.tid,b.name,b.number,b.title
你使用了DISTINCT 表示你不希望有重复,但是又需要统计数量。
所以 使用group by 进行分组,然后统计一个数量即可。
建立表结构如下: CREATE table [dbo].[tmp_Trans]( IDintidentity, PO_NO varchar(20) null, PO_Itemno varchar(20) null, Qty numeric(18,6) null, Trans_Date datetime null, Doc_no varchar(20) null)要求取相同PO_NO按Trans_Date倒序排序的前两条记录。 1.Where子句嵌套SELECT的方式。在嵌套的SELECT语句中可以与主表的字段相关联,达到分类的目的。 这种方式又有三种写法: 1)如果表中有主键,可以用IN的方式。 SELECT * FROM tmp_Trans t WHERE ID IN( SELECT TOP 2 ID FROM tmp_Trans WHERE PO_NO=t.PO_NO ORDER BY Trans_Date DESC)2)如果没有主键,可以用判断在本条记录前有多少条记录的方式。但使用这种方式时如果遇到Trans_Date相同的情况会不准。如当存在Trans_Date最大的记录有三条时,这三条记录都会查出来。 SELECT *FROM tmp_Trans tWHERE (SELECT COUNT(*) FROM tmp_Trans WHERE PO_NO=t.PO_NO AND Trans_DateT.Trans_Date)23)使用CROSS APPLY子句。CROSS APPLY是SQL Server 2005后出来的新功能,用于在表连接时传入参数。 SELECT DISTINCT b.* FROM tmp_Trans a CROSS APPLY(SELECT TOP(2) * FROM tmp_Trans WHERE a.PO_NO=PO_NO ORDER BY Trans_Date DESC) b 2.使用自动生成的Row Number。在使用ROW_NUMBER()时可以用PARTITION BY子句来分组。建议使用这种方式。select * from (
sqlserver语句添加列步骤如下:
1、首先我们准备一个数据表,接下来将会在这个表中添加列。
2、然后我们通过alter table语句来给表添加一个列。
3、回到数据表一会我们看到列已经被添加进数据表了。
4、接下来我们在添加列的时候同时添加上默认值,这个时候运用default关键字。
5、然后回到数据表,我们就看到默认值有内容了。
6、另外在数据表中经常使用的是uniqueidentifier类型,这种字段设置默认值。
7、回到数据表中我们可以看到默认值已经添加上了。
嵌套比较多,你慢慢看。
select D.address, D.time, D.value
from (select A.address, A.time, A.value
from A
union
select B.address, B.time, B.value
from B) D,
(select C.Address, max(C.time) as maxTime
from (select A.address, A.time, A.value
from A
union
select B.address, B.time, B.value
from B) C
group by C.address) E
where D.address = E.address
and D.time = E.maxTime
LEFT([Ves_Berth],1) AS Berth_CT 是说取Ves_Berth这一列的从左边算起第1个字符串 ,取名为Berth_CT
insert ..into...select... 就是说从YP_BS_Vessel查询出Ves_Berth这一列的从左边算起第1个字符插入到这个VESSEL_CALL表,并且插入的顺序是根据表YP_BS_Vessel中的Ves_ETB字段排序过的