sqlserver sql语句练习(一)
1.一道SQL语句面试题,关于group by
表内容:
2005-05-09 胜
2005-05-09 胜
2005-05-09 负
2005-05-09 负
2005-05-10 胜
2005-05-10 负
2005-05-10 负
如果要生成下列结果, 该如何写sql语句?
rq 胜 负
2005-05-09 2 2
2005-05-10 1 2
------------------------------------------
create
table tmp(rq varchar(10),shengfu nchar(1))
insert into tmp values('2005-05-09','胜')
insert into tmp values('2005-05-09','胜')
insert into tmp values('2005-05-09','负')
insert into tmp values('2005-05-09','负')
insert into tmp values('2005-05-10','胜')
insert into tmp values('2005-05-10','负')
insert into tmp values('2005-05-10','负')
1)select rq, sum(case when shengfu='胜' then 1 else 0 end) as '胜',sum(case when shengfu='负' then 1 else 0 end) as '负' from tmp group by rq
以case开头,是一种情况,2个case语句,2种情况,胜、负

2.请教一个面试中遇到的SQL语句的查询问题
表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
------------------------------------------
create table tmp2(a int ,b
int, c int)
insert into tmp2 values(1,2,3)
insert into tmp2 values(1,2,3)
select (case when a>b then a else b end),
(case when b>c then b else c end)
from tmp2

DateDiff()描述 SQL Server 中的函数
DATEDIFF 函数计算指定的两个日期中第二个日期与第一个日期的时间差的日期部分。换句话说,它得 出两个日期之间的间隔。结果是等于 date2 - date1 的日期部分的带符号整数值。
函数返回两个日期之间的差值 。
语法
表达式 DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear]])
允许数据类型: timeinterval 表示相隔时间的类型,代码为:
年份 yy、yyyy 季度 qq、q
月份 mm、m
每年的某一日 dy、y
日期 dd、d
星期 wk、ww
工作日 dw
小时 hh
分钟 mi、n
秒 ss、s
毫秒 ms
应用范围
1,该函数在mssql中可用
2,该函数在sybase中可用
3,该函数在在oracle中不可用!

SQL Server GETDATE() 函数
定义和用法
GETDATE() 函数从 SQL Server 返回当前的时间和日期。
语法
GETDATE()
实例
例子 1
使用下面的 SELECT 语句:
SELECT GETDATE() AS CurrentDateTime
结果:
|
CurrentDateTime |
|
2008-12-29 16:25:46.635 |
注释:上面的时间部分精确到毫秒。
例子 2
下面的 SQL 创建带有日期时间列 (OrderDate) 的 "Orders" 表:
CREATE TABLE Orders
(
OrderId int NOT NULL PRIMARY KEY,
ProductName varchar(50) NOT NULL,
OrderDate datetime NOT NULL DEFAULT GETDATE()
)
请注意,OrderDate 把 GETDATE() 规定为默认值。结果是,当您在表中插入新行时,当前日期和时间自动插入列中。
现在,我们希望在 "Orders" 表中插入一条记录:
INSERT INTO Orders (OrderId,ProductName) VALUES (1,'Computer')
INSERT INTO Orders (OrderId,ProductName) VALUES (2,'手机')
INSERT INTO Orders (OrderId,ProductName) VALUES (3,'冰箱')
"Orders" 表将成为这样:

加一条数据,第4条记录的时间是2013-03-06现在数据库中的记录如下:

浙公网安备 33010602011771号