1. 表中A、B、C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
Select(casewhena>bthenaelse b end),(casewhenb>cthenbelse c end)fromT
2. 有一张表T-Scores,记录如下比赛成绩:
Date
Name
Score
2008-08-08
拜仁
胜
2008-08-09
奇才
胜
2008-08-10
湖人
胜
2008-08-11
拜仁
负
2008-08-12
拜仁
负
2008-08-13
奇才
胜
要求输出下面的格式:
Name
胜
负
拜仁
1
2
湖人
1
0
奇才
2
0
select Name,Sum(caseScoreN’胜’then 1else0 end)as胜,
Sum(caseScorewhenN’负’then 1else0end)as负
from T-ScoresGroupByName
3. 有一张表Order,记录如下:
单号
金额
RK1
10
RK2
20
RK3
-30
RK4
-10
要求输出下面格式:
单号
收入
支出
RK1
10
0
RK2
20
0
RK3
0
30
RK4
0
10
select 单号,(case金额>0then金额else 0 end)as收入,(case金额<0thenABS(金额)else 0end)fromOrder
4. 创建一张表,记录电话呼叫员的工作流水,记录呼叫员编号、对方号码、通话开始时间、通话结束时间
--输出所有数据中通话时间最长的5条记录
select top 5 * from CallRecords
order by datediff(S,StartDateTime,EndDateTime)desc
--输出所有数据中拨打长途号码(开头为0)的总时长。
select sum(datediff(S,StartDateTime,EndDateTime))fromCallRecords
where TelNumberlike'0%'
--输出本月通话总时长最多的前三个呼叫员的编号
select top 3 callerNumber from CallRecords
where datediff(month,StartDateTime,EndDateTime)=0
group by CallerNumber
order by sum(datediff(S,StartDateTime,EndDateTime))desc
--输出本月拨打电话次数最多的前三个呼叫员编号
select top 3 callerNumber from CallRecords
where datediff(month,StartDateTime,EndDateTime)=0
group by CallerNumber
order by count(*) desc
--输出所有数据的拨号流水,并在最后一行添加总时长
select CallerNumber,TelNumber,datediff(S,StartDateTime,EndDateTime)as'通话时长'fromCallRecords
union all
select '汇总',
convert(varchar(50),sum((casewhenTelNumberlike '0%' thendatediff(S,StartDateTime,EndDateTime)else 0 end)))as'长途通话',
sum((casewhenTelNumbernot like '0%'thendatediff(S,StartDateTime,EndDateTime)else 0 end))as'市内通话'
from CallRecords
5. 取出表 A 中第 31 到第 40 记录(SQLServer,以自动增长的 ID 作为主键,注意:ID 可能不是连续的)
1.select top 10*fromA where idnotin(selecttop 30idfrom A)
2.select top 10*fromA where id>(selectmax(id)from(selecttop 30id from A )asA)
3.select row,namefrom(selectrow_number()over(orderbyid)asrow,namefromA)asAWithRowNumberwhererow>=31 and row<=40
6. 请写一个SQL 语句:从user 表中取出name 列中的起始字符是“北京”的全部记录
select * from [user] wherernamelike'北京%'
7. 有一职员表,字段有工卡和姓名,写出所有姓名重复的职员信息的SQL语句。
select * from test wherenamein(selectnamefromtest group bynamehaving count(name)>1
8. 有两张表Table1,Table2 ,都只有一个字段。Table有数据'1','2','3','4',Table2有'1','3'.写出一句通用Sql语句将表Table1的记录同步到Table2中。
insert table2(字段)select'2'unionselect'4'
9. 给定表table1中有两个字段ID、LastUpdateDate。ID表示更新的事务号、LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号。
select top ID from table1 order by LastUpdateData desc;
Select ID FROM table1 WhereLastUpdateDate=(SelectMAX(LastUpdateDate)FROMtable1)