Sql Server问题摘要

转载 2004年07月02日 14:17:00

Sql Server问题摘要

1.         合并若干个表?

描述:建立一个新表,其字段结构是其他若干个表Join以后的结果。

解决思路:select * into 新表名 from 旧表1名,旧表2名,……

实例:

--表NewTableName的字段为表titles和titleauthor字段表相加;

---记录为记录为select * from titles,titleauthor的记录

select * into NewTableName from titles,titleauthor

--表NewTableName的字段[title_id,title,au_id]

-- 记录为select a.title_id,a.title,b.au_id from titles a,titleauthor b where a.title_id=b.title_id

select a.title_id,a.title,b.au_id into NewTableName from titles a,titleauthor b where a.title_id=b.title_id

2.         查询N-M条记录?

描述:要从记录集中取出中间一段记录来(如: 取10条中的第3-8条)

解决思路:

1.       有关键字或确保唯一的候选关键字字段:

方法1:从第n条记录开始取m-n+1条数据                   

方法2:升序取前m条记录最为a, 再降序从a中取m-n+1条记录作为b

2.       没有上述字段:

增加一个自增字段生成一个临时表,在从临时表中取记录[Where 自增字段名>n-1]

实例:      --

     --取第4到第7条记录 [对1方法一]

SELECT top 4 * FROM jobs WHERE job_id not in (SELECT top 3 job_id FROM jobs)

--[方法二]

SELECT top 4 * FROM

(SELECT top 4 * FROM

(SELECT top 7 * FROM jobs ORDER BY job_id ASC)  a

ORDER BY job_id DESC

) b

ORDER BY job_id ASC

--取第2到第3条记录 [对1方法一]

select IDENTITY(int,1,1) as iid,* into #temptable from discounts select top 2 * from #temptable where iid>=2

3.         按年度季度统计汇总?

描述: 统计表employee的各年度各季度的雇佣人数

解决思路:Group by 和 [函数datepart()]   

实例:

         //季度:quarter

SELECT year(hire_date) 年度,datepart(q,hire_date) 季度,count(emp_id)雇佣人数 FROM employee

GROUP BY year(hire_date),datepart(q,hire_date)

ORDER BY 年度,季度

4.         随机取n条记录?

描述: 从表中随机提取n条记录

解决思路:按照用Guid

实例:

         --从表中随机取5条记录

SELECT top 5 * FROM titles ORDER BY newid()

5.         求出任意时间所在季度的天数?

描述: 如题

解决思路:注意闰年

实例:

declare @t smalldatetime

select @t = '2001-4-1'

select case datepart(quarter,@t)

                  when 1 then

(case when (year(@t)%4=0 and year(@t)%100<>0) or year(@t)%400=0 then 91 else 90 end)

                  when 2 then 91

                  when 3 then 92

                  when 4 then 92

      end

6.         求出任意时间的季度的第一天?

描述: 如题

解决思路: 如下

实例:

-- [思路:把日期向前推到季度的第一个月的当前号

--注意:5月31号不会推成4月31号 ,系统自动转为30号

declare @d datetime

set @d='2003-5-31'

select @d as 指定日期,

dateadd(month,-(month(@d)-1)%3,@d)-day(dateadd(month,-(month(@d)-1)%3,@d))+1 as 季度的第一天

-- [思路:分别求出年月日在转为日期型]

declare @t smalldatetime

select @t = '2001-9-30'

select cast(cast(year(@t) as varchar) + '-' + cast(3*datepart(q,@t)-2 as varchar) + '-1' as datetime)

--求当前的日期季度的第一天

select cast(cast(year(getdate()) as varchar) + '-' + cast(3*datepart(q,getdate())-2 as varchar) + '-1' as datetime)

7.         时间重叠度的问题?

出处:http://expert.csdn.net/Expert/topic/2806/2806966.xml?temp=.5277979

描述:

create table #a(id int identity(1,1),date1 datetime,date2 datetime)

insert #a select '2004-02-29 16:45:00','2004-02-29 20:45:00'

union all select '2004-02-29 18:45:00','2004-02-29 22:45:00'

union all select '2004-03-01 10:45:00','2004-03-01 13:45:00'

union all select '2004-03-01 13:45:00','2004-03-01 16:45:00'

union all select '2004-03-01 13:47:00','2004-03-01 14:25:00'

union all select '2004-03-01 16:45:00','2004-03-01 19:15:00'

union all select '2004-03-01 17:45:00','2004-03-01 18:55:00'

union all select '2004-03-01 18:45:00','2004-03-01 21:45:00'

select *from #a

我现在要找出时间上重叠超过1个小时的所有记录!

比如第1、2条:一个是从16:45---20:45,第二条是从18:45---22:45时间上重叠了2个小时,所以这两条都要取出,其它的也是一样的规则!

date2-date1小于1小时的不用考虑,如第5条。可以先删除该条,记录是按date1排序的!

所以最终的结果要为:

id          date1                       date2                      

----------- --------------------------- ---------------------------

1           2004-02-29 16:45:00.000     2004-02-29 20:45:00.000

2           2004-02-29 18:45:00.000     2004-02-29 22:45:00.000

6           2004-03-01 16:45:00.000     2004-03-01 19:15:00.000

7           2004-03-01 17:45:00.000     2004-03-01 18:55:00.000

解决思路:

实例:

--方案一:[作者:“victorycyz(中海,干活去了,不在CSDN玩。)”]

select distinct a.*

from #a a , #a b

where a.id<>b.id and

      a.date1<b.date2 and a.date2>b.date1 and

      (case when a.date2>b.date2 then b.date2 else a.date2 end)-

      (case when a.date1>b.date1 then a.date1 else b.date1 end)>1/24.0

--方案二:[作者:“j9988(j9988)”]

select * from #a A where

exists(select 1 from #a

       where id<>A.id

        and dateadd(minute,60,date1)<date2

        and (date1 between A.date1 and A.date2)

        and abs(datediff(minute,date1,A.date2))>=60)

or

exists(select 1

       from #a

       where id<>A.id

       and dateadd(minute,60,A.date1)<A.date2

       and (A.date1 between date1 and date2)

       and abs(datediff(minute,A.date1,date2))>=60)   

深度学习之视频摘要简述

现如今城市生活节奏越来越快,我们每天接收的信息越来越多。在庞大视频信息中,作为用户的我们在看完整视频之前,更想知道视频主题是什么、视频精华信息是哪些,也是基于这种需求,谷阿莫等影视评论者才得到如此多的...
  • Uwr44UOuQcNsUQb60zk2
  • Uwr44UOuQcNsUQb60zk2
  • 2017年12月22日 06:46
  • 114

视频摘要发展综述

在现如今城市快节奏的生活中,人们在浏览一些视频时,可能并不想花费大量的时间来看一个完整的视频。更多时候,人们只需要知道这个视频最精华的信息,也是基于这种需求,谷阿莫等影视评论者才得到如此多的关注。此时...
  • wjmnju
  • wjmnju
  • 2017年12月11日 11:04
  • 310

SQL Server 连接问题圣经-命名管道 (3)

五。 命名管道连接问题的解决步骤 好了,介绍到这里你应该对命名管道很不陌生了,也应该是时候讨论命名管道连接问题的解决步骤了: 步骤1:使用服务器端网络实用工具检查命名管道配置并确认SQL Server...
  • apgcdsd
  • apgcdsd
  • 2011年04月21日 10:48
  • 251

安装SQL Server 2008注意事项

安装SQL Server 2008,如果安装了VS2008 SP1的话 , 必需要安装  汉化补丁,不然只能用英文的了-_-!!  Visual Studio 2008 SP1  官网下载地址 ...
  • ou832339
  • ou832339
  • 2014年03月10日 20:33
  • 730

SQL查询语句摘要

1.去除左边空格 update [testdata].[dbo].[acronyms] set words=ltrim(words) words:数据表acronyms的一个字段。 testdat...
  • w952470866
  • w952470866
  • 2017年05月24日 15:13
  • 101

SQL Server孤立账户解决办法

每次从服务器上备份好数据库(Sql Server数据库),如果将备份数据库文件在本地恢复,总会产生用户权限的问题。 经过很多次的实验后,我发现有那么一条语句可以发挥作用,就是sp_change_...
  • rivarola
  • rivarola
  • 2014年12月04日 15:22
  • 2405

【转】SQL Server并行度问题

咨询微软sql server工程师,收集第一个查询语句在两台机器上的查询计划,将结果保存后发送给微软工程师,经分析后,两台机器上同一sql语句的查询计划相同,但是两台机器的并行度不同,sql serv...
  • guaiguaigirlma
  • guaiguaigirlma
  • 2013年08月20日 14:17
  • 1021

SQL Server 2012 安装杂谈(安装注意事项)

SQL Server 2012 安装杂谈   回想一下,距离上次去微软培训SQL SERVER 2012已经有一段时间啦,从讲师打开2012的一瞬间,其实我已经开始想要跃跃欲试这...
  • lzqinfen
  • lzqinfen
  • 2014年08月20日 16:20
  • 1892

dede 文章摘要长度

dede/article_description_main.phpdede/article_edit.php 在edit页面,有一句话是:“$description = cn_substrR($des...
  • forest_fire
  • forest_fire
  • 2016年03月21日 10:55
  • 271

SQL Server数据导入、导出需要注意的问题

        SQL Server数据插入的时候自增字段是不需要指定值的,插入的时候就会自增长。但使用数据库企业管理器数据导入时导入到目的表的自增字段是和源表的自增字段相同的,也就是说它把源表的数据...
  • zhyuanshan
  • zhyuanshan
  • 2007年05月21日 11:20
  • 1276
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Sql Server问题摘要
举报原因:
原因补充:

(最多只允许输入30个字)