网站需要哪些备案,深圳专门做网站,洛阳市住房与城乡建设部网站,百度网站权重排名1. 行列转换--普通假设有张学生成绩表(CJ)如下Name Subject Result张三 语文 80张三 数学 90张三 物理 85李四 语文 85李四 数学 92李四 物理 82想变成 姓名 语文 数学 物理张三 80 90 85李四 85 92 82declare sql varchar(4000)set sql select Nameselect sql sql ,sum(cas…1. 行列转换--普通假设有张学生成绩表(CJ)如下Name Subject Result张三 语文 80张三 数学 90张三 物理 85李四 语文 85李四 数学 92李四 物理 82想变成 姓名 语文 数学 物理张三 80 90 85李四 85 92 82declare sql varchar(4000)set sql select Nameselect sql sql ,sum(case Subject when Subject then Result end) [Subject]from (select distinct Subject from CJ) as aselect sql sql from test group by nameexec(sql)2. 行列转换--合并有表A,id pid1 11 21 32 12 23 1如何化成表B:id pid 1 1,2,3 2 1,2 3 1创建一个合并的函数create function fmerg(id int)returns varchar(8000)asbegindeclare str varchar(8000)set strselect strstr,cast(pid as varchar) from 表A where idid set strright(str,len(str)-1)return(str)Endgo--调用自定义函数得到结果select distinct id,dbo.fmerg(id) from 表A3. 如何取得一个数据表的所有列名方法如下先从SYSTEMOBJECT系统表中取得数据表的SYSTEMID,然后再SYSCOLUMN表中取得该数据表的所有列名。SQL语句如下declare objid int,objname char(40)set objname tablenameselect objid id from sysobjects where id object_id(objname)select Column_name name from syscolumns where id objid order by colid是不是太简单了 呵呵 不过经常用阿.4. 通过SQL语句来更改用户的密码修改别人的,需要sysadmin role EXEC sp_password NULL, newpassword, User如果帐号为SA执行EXEC sp_password NULL, newpassword, sa 5. 怎么判断出一个表的哪些字段不允许为空select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where IS_NULLABLENO and TABLE_NAMEtablename 6. 如何在数据库里找到含有相同字段的表a. 查已知列名的情况SELECT b.name as TableName,a.name as columnname From syscolumns a INNER JOIN sysobjects b ON a.idb.id AND b.typeU AND a.name你的字段名字 b. 未知列名查所有在不同表出现过的列名Select o.name As tablename,s1.name As columnname From syscolumns s1, sysobjects o Where s1.id o.id And o.type U And Exists ( Select 1 From syscolumns s2 Where s1.name s2.name And s1.id s2.id )7. 查询第xxx行数据假设id是主键 select * from (select top xxx * from yourtable) aa where not exists(select 1 from (select top xxx-1 * from yourtable) bb where aa.idbb.id) 如果使用游标也是可以的 fetch absolute [number] from [cursor_name] 行数为绝对行数8. SQL Server日期计算a. 一个月的第一天SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) b. 本周的星期一SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) c. 一年的第一天SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) d. 季度的第一天SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0) e. 上个月的最后一天 SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) f. 去年的最后一天SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)) g. 本月的最后一天SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())1, 0)) h. 本月的第一个星期一select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate()) ), 0) i. 本年的最后一天SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())1, 0))。 转载于:https://www.cnblogs.com/xh831213/archive/2006/04/24/383226.html