----新建登錄角色用戶:
站在用戶的角度思考問題,與客戶深入溝通,找到朔州網站設計與朔州網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:做網站、網站設計、企業官網、英文網站、手機端網站、網站推廣、國際域名空間、網站空間、企業郵箱。業務覆蓋朔州地區。
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字段排序過的