
SQL
文章平均质量分 57
sostemp
这个作者很懒,什么都没留下…
展开
-
列转行问题
假设有张学生成绩表(tb)如下:Name Subject Result张三 语文 及格张三 数学 及格张三 物理 良好李四 语文 及格李四 数学 良好李四 物理 差改成:想变成 姓名 语文 数学 物理 ---------- ----------- ----------- ----------- 李四 及格 良好 差张三 及格 及格 良好注意科目不是分数,请高手帮忙!!!!create table tb( Name varchar(10) , Subject varchar原创 2010-12-16 12:35:00 · 288 阅读 · 0 评论 -
通过sql语句找到列名字为‘date_3’的那一列对比的数据库字段不是固定的,要在date_1到date_10中筛选
<br />droptable tb<br />createtable tb<br />( <br /> col varchar(50)<br />)<br />createtable Plan_Orignal_Table1<br />( <br /> date_3 varchar(50)<br />)<br />insertinto tb values('date_1')<br />insertinto tb values('date_2')<br />insertinto tb values('date转载 2010-12-27 09:53:00 · 391 阅读 · 0 评论 -
不知道需要多少列呢?那我怎么动态写入
<br />if OBJECT_ID('tb') is not null drop table tb<br />go<br />create table tb<br />(<br /> col1 varchar(10),<br /> col2 varchar(10),<br /> col3 varchar(10),<br /> col4 varchar(10),<br /> col5 varchar(10),<br /> col6 varchar(10),<br /> col7转载 2010-12-27 10:20:00 · 356 阅读 · 0 评论 -
sql查询
<br />id(auto) name date time1 time2 <br />1 BICHLAM,NGUYEN 2010-12-16 08:47:00 12:04:00<br />2 BICHLAM,NGUYEN 2010-12-16 12:55:00 17:40:00<br />3转载 2010-12-27 10:40:00 · 320 阅读 · 0 评论 -
sql如何获取一个0-15之间的随机数(不包括0,15),而且必须带两位随机的小数
<br />Selectcast(rand() *15asdecimal(18,2))<br /> <br />declare@numfloat<br />select@num=rand()*15<br />selectsubstring(cast(@numasvarchar(20)),0,charindex('.',@num)+3)<br /><br />--根据 时间种子 随机生成<br />selectconvert(decimal(8,2),15*rand(datepart(ms,getdate()原创 2010-12-27 09:30:00 · 1335 阅读 · 0 评论 -
输出为 'AAA,BBB'的形式
<br />表结构如下 <br /> ID UserName<br /> 1 AAA<br /> 2 BBB<br />我现在想将表中UserName左右值赋予一个变量,输出为 'AAA,BBB'的形式,应该写个怎样的SQL呢,在线等,谢谢 <br /> <br />declare@svarchar(8000)<br />select@s=isnull(@s+',','')+username<br />from tb<br />select@s<br /> <br />declare@svarcha转载 2010-12-27 09:34:00 · 948 阅读 · 0 评论 -
按日期来动态行列转换
<br />declare@sqlvarchar(8000)<br />set@sql='select 客户 '<br />select@sql=@sql+' , sum(case 日期 when '''+ 日期 +''' then 数量 else 0 end) ['+ 日期 +']'<br />from (selectdistinctconvert(varchar(10),日期,120) 日期 from tb) as a<br />set@sql=@sql+' from tb group by 客户'<b转载 2010-12-27 09:37:00 · 1011 阅读 · 0 评论 -
SQL 外连接的疑惑
<br />根据数据库理论, 第一张表如果有m条记录, 第二张表有n条记录, 那么笛卡儿积之后, 应该有m*n条记录。 <br /><br />现在有一张表A(id ,name), 有三条记录<br /><br />id name<br />1 A<br />2 B<br />3 C<br /><br /><br /><br />表B(id)没有记录。<br /><br />执行 如下语句:<br /><br />select * from A,B<br /><br />返回0条记录, 符合数据库理论,转载 2010-12-27 11:43:00 · 417 阅读 · 0 评论 -
sql查询时能否查询多个栏目的数据,有数组“9,13,20,22”这是栏目ID
<br />比如select * from book where bookid="9"<br /><br />想把这些栏目在一个语句中查询出来,并且是栏目参数中有“,”,谢谢<br /><br />declare@svarchar(100)<br />set@s='9,13,20,22'<br />select*from book wherecharindex(','+bookid+',',','+@s+',')>0<br /> <br />如果bookid的类型是int<br /><br />SQL co转载 2010-12-27 11:55:00 · 563 阅读 · 0 评论 -
将每日输入明细插入到考勤表与工资表
<br />create procedure Hhwtdaypay @fid int <br />--将每日输入明细插入到考勤表与工资表<br />--插入考勤<br />declare @at varchar(20) set @at=CONVERT(varchar(100), GETDATE(), 23)<br />INSERT INTO [Hwt]([fid],[date1],[m1],[iDNO],[workhour],[zm1]<br /> ,[zm2],[createPerson],[crea转载 2010-12-27 10:27:00 · 987 阅读 · 0 评论 -
普通行列转换(version 2.0)
<br />*<br />标题:普通行列转换(version 2.0)<br />作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)<br />时间:2008-03-09<br />地点:广东深圳<br />说明:普通行列转换(version 1.0)仅针对sql server 2000提供静态和动态写法,version 2.0增加sql server 2005的有关写法。<br /><br />问题:假设有张学生成绩表(tb)如下:<br />姓名 课程 分数<br />张三 语文 74<br />张三转载 2010-12-27 11:45:00 · 300 阅读 · 0 评论 -
按某字段合并字符串之一(简单合并)
<br />/*<br />标题:按某字段合并字符串之一(简单合并)<br />作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)<br />时间:2008-11-06<br />地点:广东深圳<br /><br />描述:将如下形式的数据按id字段合并value字段。<br />id value<br />----- ------<br />1 aa<br />1 bb<br />2 aaa<br />2 bbb<br />2 ccc<br />需要得到结果转载 2010-12-27 10:34:00 · 389 阅读 · 0 评论 -
90度旋转行列转换之一
/*<br />标题:90度旋转行列转换之一<br />作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)<br />时间:2010-05-08<br />地点:重庆航天职业学院<br />说明:无<br />*/<br />/*<br />数据库中tb表格如下<br />月份 工资 福利 奖金<br />1月 100 200 300<br />2月 110 210 310<br />3月 120 220 320<br />4月 130 230 330<br /><br />我想得到的结果是<br /><转载 2011-03-29 17:20:00 · 535 阅读 · 0 评论 -
转换成为1,2,3,4,5形式
<br />合并列值 <br />--*******************************************************************************************<br />表结构,数据如下: <br />id value <br />----- ------ <br />1 aa <br />1 bb <br />2 aaa <br />2 bbb <br />2 ccc <br /><br />需要得到结果:转载 2011-04-12 08:48:00 · 444 阅读 · 0 评论 -
sql如何获取某一个表的所有字段名,并且有一个字段的统计数
<br />select name from syscolumns where id=object_id('表名')<br /><br />selectcount(1) 统计数 from syscolumns where id=object_id('表名'<br />还是要整在一个表:<br /><br />SQL code select 字段顺序='字段'+ltrim(colid),字段名=name from syscolumns where id=object_id('tb')unionallse原创 2011-04-12 08:51:00 · 902 阅读 · 0 评论 -
获取拼音首字母函数
--返回汉字首字母 create function [dbo].[chinese_firstletter] ( @str nvarchar(1) ) returns nvarchar(1) as begin declare @word nchar(1),@PY nvarchar(4000) set @PY='' set @word=left(@str,1) --如果非汉字字符,返回原字符 set @PY=@PY+(原创 2011-04-12 08:59:00 · 514 阅读 · 0 评论 -
sql如何写出excel数据透视表功能
<br />表1<br />商品名+商品编号+商品版本,3个自段<br />A 001 revA<br />B 001 revA<br />A 002 revA<br />A 001 revB<br />B 002 revA<br />C 001 revB<br />请问如何用sql显示成如下(类似与excel数据透视表)<br /><br />商品名 revA revB<br />A 2 1<br />B 2 0<br />CREATETABLE #t1(<br />商品名 VARCHAR(20),<br转载 2010-12-27 09:17:00 · 1472 阅读 · 0 评论 -
表aae 每个项目编号下总价多少
<br />表aac01 aac01 (项目编号) 1 2 表aae aae01 aae02 aae03 1 2 3 1 3 4 2 2 2 aac01 对应aae01 如何用一条语句查出 表aae 每个项目编号下总价多少 即 1 ---》2*3+3*4 2---> 2*2<br /> <br />createtable aac01(aac01 int)<br />insertinto aac01 values(1)<br />insertinto aac01 values(2)<br />createta原创 2010-12-16 20:02:00 · 323 阅读 · 0 评论 -
日期如何相减
<br />在SQL表中有两个字段,分别为字符型,里面的数据是这样保存的:20101101代表2010-11-01<br />我现在想实行两个日期的加减运算,如:20101215-20101207=8这种方式,如果同月份的话转换成INT后是可以相减的,但是如果到要跨月的话就出现错误了,如:20101201-20101130=71<br />请问像这种跨月或跨年的应该怎么处理?谢谢!<br /> <br />selectdatediff(day , '20101130','20101201')<br /><b转载 2010-12-16 12:38:00 · 1231 阅读 · 0 评论 -
SQL做日历
<br />DECLARE@DATEDATETIME<br />SET@DATE=GETDATE()<br /><br />SELECT<br />SUN=MAX(CASEWHENDATEADD(DAY,NUMBER,DATEADD(DAY,1-DAY(@DATE),@DATE))=@DATETHEN'*'ELSE''END+CASEWHENDATEPART(WEEKDAY,DATEADD(DAY,NUMBER,DATEADD(DAY,1-DAY(@DATE),@DATE)))=1THENLTRIM(DAY转载 2010-12-16 13:00:00 · 2480 阅读 · 0 评论 -
SQL做日历
<br />DECLARE@DATEDATETIME<br />SET@DATE=GETDATE()<br /><br />SELECT<br />SUN=MAX(CASEWHENDATEADD(DAY,NUMBER,DATEADD(DAY,1-DAY(@DATE),@DATE))=@DATETHEN'*'ELSE''END+CASEWHENDATEPART(WEEKDAY,DATEADD(DAY,NUMBER,DATEADD(DAY,1-DAY(@DATE),@DATE)))=1THENLTRIM(DAY转载 2010-12-16 13:02:00 · 409 阅读 · 0 评论 -
查看当前进程,或死锁进程,并能自动杀掉死进程
<br />/*--处理死锁<br /><br /> 查看当前进程,或死锁进程,并能自动杀掉死进程<br /><br /> 因为是针对死的,所以如果有死锁进程,只能查看死锁进程<br /> 当然,你可以通过参数控制,不管有没有死锁,都只查看死锁进程<br /><br />--邹建 2004.4--*/<br /><br />/*--调用示例<br /><br /> exec p_lockinfo<br />--*/<br />create proc p_lockinfo<br />@kill_lock_sp转载 2010-12-16 13:08:00 · 365 阅读 · 0 评论 -
到让所有“Y-”开头的排在“Y2-”开头的前面
<br />--> 数据库版本:<br />--> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22<br />--> 测试数据:[TB]<br />IF EXISTS (SELECT*FROM sys.objects WHEREobject_id=OBJECT_ID(N'[TB]') <br />AND type in (N'U')) <br />DROPTABLE[TB]<br />GO<br /><br />---->建表<br />createtable转载 2010-12-16 13:10:00 · 414 阅读 · 0 评论 -
接收三个返回参数 考虑把三个串用逗号隔开,然后做为一个变量传出去.
<br />createprocedure my_proc @strvarchar(20) OUTPUT<br />as<br />begin<br /> declare@i1asint<br /> declare@i2asint<br /> declare@i3asint<br /> select@i1=count(1) from authors<br /> select@i2=count(1) from discounts<br /> select@i3=count(1) from empl转载 2010-12-16 13:13:00 · 532 阅读 · 0 评论 -
sql中多层分割字符串问题
<br />怎么将字符串<br />275-2-0-1001512-0-11.8000+275-2-1-1001512-1001370--+275-2-2-1001512-1001358--+275-3-0+1002316-0-48.000+275-3-1-1002316-1004365--等数据,<br />按照“+”分开这个需要循环,然后在按照“-”分开将每条数据每个字段截取出来插入到一个表,有些字段是空值就是--之间没数据,但也要分割只是插入的时候赋值个空,插入数据库后效果<br />表中的log,i转载 2010-12-16 13:18:00 · 619 阅读 · 0 评论 -
sql 合计问题
<br />表T中现有如下数据:<br />workProc productName departNm amount<br />裁剪 半袖 裁剪车间 1340<br />缝纫 半袖 织造车间一部 100<br />包装 半袖 织造车间二部 100<br />裁剪 衬衫 裁剪车间 1000<br />缝纫 衬衫 织造车间三部 150<br />包装 衬衫 织造车间一部 100<br />裁剪 裤子 裁剪车间 800<br />缝纫 裤子 织造车间三部 200<br />包装 裤子 织造车间四部 120<br转载 2010-12-16 13:22:00 · 603 阅读 · 0 评论 -
有一段比较长的文字,有回车键、空格、空行等,怎么写入数据库的字段?
<br />--tools--options--Query Results--Result to text--max number of characters displayed<br />in each column<br /> <br /> <br />DROPTABLE[test]<br />CREATETABLE[dbo].[test] (<br />[test][nvarchar] (MAX) COLLATE Chinese_PRC_CI_AS NULL <br />) ON[PRIMARY]<转载 2010-12-16 13:28:00 · 880 阅读 · 0 评论 -
SQL语句转换
<br />/*表结构,数据如下: <br />id value <br />----- ------ <br />1 aa <br />1 bb <br />2 aaa <br />2 bbb <br />2 ccc <br /><br />需要得到结果: <br />id values <br />------ ----------- <br />1 aa,bb <br />2 aaa,bbb,ccc <br />即原创 2010-12-16 13:32:00 · 864 阅读 · 0 评论 -
纵向数据变为横向数据
<br />单号 类别<br />001 A<br />001 A<br />001 D<br />002 B<br />002 C<br />002 C<br />003 A<br />003 B<br /><br />查询结果(在一列中显示):<br /><br />001-A-D<br />002-B-C<br />003-A-B<br />createtable tb(单号 varchar(10),类别 varchar(10))<br />insertinto tb values('001', 'A转载 2010-12-16 13:35:00 · 1509 阅读 · 0 评论 -
SQL2000表分组问题
<br />现SQL2000服务器上有一张表,格式如下:<br /><br />文件内容 文件组<br />1 A<br />2 A<br />3 A<br />4 B<br />5 C<br />6 D<br />7 E<br />8 E<br />9 F<br /><br />要实现将表内容更新为:<br /><br /><br />文件内容 文件组<br />A<br />1 A<br />2 A<br />3 A<br />B<br />4 B<br />C<br />5 C<br />D<br /转载 2010-12-16 12:43:00 · 298 阅读 · 0 评论 -
SQL做日历
<br />DECLARE@DATEDATETIME<br />SET@DATE=GETDATE()<br /><br />SELECT<br />SUN=MAX(CASEWHENDATEADD(DAY,NUMBER,DATEADD(DAY,1-DAY(@DATE),@DATE))=@DATETHEN'*'ELSE''END+CASEWHENDATEPART(WEEKDAY,DATEADD(DAY,NUMBER,DATEADD(DAY,1-DAY(@DATE),@DATE)))=1THENLTRIM(DAY转载 2010-12-16 13:03:00 · 429 阅读 · 0 评论 -
取 最大的日期
<br />字段<br />shipID, varchar(10)<br />sessionID, varchar(10)<br />EndDate_N, varchar(20)<br />EndDate_S, varchar(20)<br />EndDate_F, varchar(20)<br />EndDate_X, varchar(20)<br />以为项目开发需要 EndDate_N 下面这几个字段我转换为varchar存进去的.<br />测试数据<br /> 1 101 2010-05-06转载 2010-12-16 13:07:00 · 635 阅读 · 0 评论 -
判断一字段的最后一个字符是否是汉字
<br />如 select xuhao,xingming from student ,在xingming字段中有些字段值最后包括了其他字符,我如何判断出字段值的最后一个字符不是汉字。<br />例如<br />xingming<br /><br />张三<br />李四232 <br />万个a<br />createtable tb(xingming varchar(10))<br />insertinto tb values('张三')<br />insertinto tb values('李四23转载 2010-12-16 13:21:00 · 659 阅读 · 0 评论 -
求一个排序的sql语句
<br />我要查询的数据有这样的一列<br />2G<br />1G<br />16G<br />其他<br />4G<br /><br />我想要将这些排序成这样<br />1G<br />2G<br />4G<br />16G<br />其他<br /><br />sql排序语句该怎么写?<br />--> 测试数据: #tb<br />ifobject_id('tempdb.dbo.#tb') isnotnulldroptable #tb<br />go<br />createtable #tb (转载 2010-12-16 13:25:00 · 428 阅读 · 0 评论