学习sql,发现很多语句不会,还望各位不吝赐教~~~~
(一),对于一张已经定义好的表,怎么修改一个列的属性,比如说原来是char(6),现在要改为char(8)。要求sql语句~~~
(二),怎样创建一个rule,使某一列的值默认值为某个数。sql语句
(三),假设有一张订单表,包括订单号(oid),订单日期(odate),订单价格(om)
,要求返回一个报表,显示每一天的订单总额(一天可能有很多订单),如果订单总额大于某个值(例1200)就返回一个H,否则就为L
大概如下
天 额 描述
5-15 2500 H
5-16 1000 L
。。
原表
oid date money
01 5-15 200
02 5-15 100
03 5-16 200
。。
(sql语句)
(一),对于一张已经定义好的表,怎么修改一个列的属性,比如说原来是char(6),现在要改为char(8)。要求sql语句~~~
(二),怎样创建一个rule,使某一列的值默认值为某个数。sql语句
(三),假设有一张订单表,包括订单号(oid),订单日期(odate),订单价格(om)
,要求返回一个报表,显示每一天的订单总额(一天可能有很多订单),如果订单总额大于某个值(例1200)就返回一个H,否则就为L
大概如下
天 额 描述
5-15 2500 H
5-16 1000 L
。。
原表
oid date money
01 5-15 200
02 5-15 100
03 5-16 200
。。
(sql语句)
(3)
SELECT [date] AS 天,[money] AS 额,'描述'=CASE WHEN [money]>1200 THEN 'H' ELSE 'L' END
FROM
( SELECT [date],SUM([money]) AS [money] FROM tablename GROUP BY [date] ) AS tbtemp
默认值不是用rule,而是default
CREATE DEFAULT df_某列 AS 某个数
go
exec sp_bindefault df_某列, '某表.某列'
go
FROM tablename GROUP BY [date]
from 订单表
group by date
Alter table 你的表名称 ALTER COLUMN 列名称 char(8)
2) 创建规则并绑定到字段(2句,创建默认值+绑定到列)
--使用Create default创建默认值,如
create default 默认值名称 as 值
--使用存储过程sp_bindefault来将规则绑定到列,如
exec sp_binddefault 默认值名称,列名称
如,将默认值today绑定到 employees 表的 hire date 列
EXEC sp_bindefault 'today', 'employees.[hire date]'
3)..先看看先..
from 订单表
group by date
from 原表
group by date碰到这样的需求,你需要分析一下,如果操作就会清晰得多,如你的例子中..
1)显示每一天的订单总额 ,即是一个按天对MONEY进行分组汇总的问题
则会产生这样的语句:select 额=sum(money) .... group by date
2)后面由于是根据条件判断sum(MONEY)值来生产一列,这在SQL中通常是使用CASE来完成的,CASE的具体语句请参见联机帮助..
case when sum(money)>1200 'H' else 'L' END偶也是菜鸟,得到过不少人的帮助..希望上面的话能够让你看得更加清楚
--case when sum(money)>1200 'H' else 'L' END
应为case when sum(money)>1200 THEN 'H' else 'L' END--完整的句子
select 天=[date],额=sum(money),描述=case WHEN sum(money)>1200 THEN 'H' else 'L' END
from 原表
group by date
declare @t1 table(oid int identity(1,1),date char(10),money int)insert @t1(date,money)
select '5-15',200 union all
select '5-15',100 union all
select '5-16',2000
select date as 日期,sum(money)as 额,(case when sum(money)>1200 then 'h ' else 'l' end)as 描述
from @t1
group by date
order by date
有两种方法:
一种是在建表时直接创建
CREATE TABLE 表名
( 列1 int not null
DEFAULT 1,
.......
)
一种是在建表后创建并绑定到某一列上,要分两步来做
1.创建默认值
CREATE DEFAULT phonedflt AS 'unknown'
2.绑定默认值
sp_bindefault phonedflt, '表名'
select odate as 订单日期,sum(om)as 订单总额,(case when sum(om)>1200 then 'h ' else 'l' end)as 状态 from 表名 group by odate order by odate
(二),怎样创建一个rule,使某一列的值默认值为某个数。sql语句
alter table t alter column col1 default 1(三),假设有一张订单表,包括订单号(oid),订单日期(odate),订单价格(om)
,要求返回一个报表,显示每一天的订单总额(一天可能有很多订单),
如果订单总额大于某个值(例1200)就返回一个H,否则就为L
大概如下
天 额 描述
5-15 2500 H
5-16 1000 L
。。
原表
oid date money
01 5-15 200
02 5-15 100
03 5-16 200
。。
(sql语句)select 天,
额,
case when 额 > 1200 then 'H'
else 'L' end as 描述
from
(
select date as 天,
sum(money) as 额
from t
group by date
) a