学习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语句)

解决方案 »

  1.   

    (1)ALTER TABLE tablename  ALTER COLUMN columnname char(8) 
    (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
      

  2.   

    (二),怎样创建一个rule,使某一列的值默认值为某个数。sql语句
    默认值不是用rule,而是default
    CREATE DEFAULT df_某列 AS 某个数
    go
    exec sp_bindefault df_某列, '某表.某列'
    go
      

  3.   

    (3)可以直接:SELECT [date] AS 天,sum[money] AS 额,'描述'=CASE WHEN sum[money]>1200 THEN 'H' ELSE 'L' END 
    FROM tablename GROUP BY [date] 
      

  4.   

    select 天=date,额=sum(money),描述=case when sum(money)>1200 then 'H' else 'L' end
    from 订单表
    group by date
      

  5.   

    1) 修改列属性
        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)..先看看先..
      

  6.   

    select 天=date,额=sum(money),描述=case when sum(money)>1200 then 'H' else 'L' end
    from 订单表
    group by date
      

  7.   

    select 天=[date],额=sum(money),描述=case WHEN sum(money)>1200 'H' else 'L' END
    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偶也是菜鸟,得到过不少人的帮助..希望上面的话能够让你看得更加清楚
      

  8.   

    补充一下,上面的打字快了点了,打错(少了个THEN)...呵呵..汗
    --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
      

  9.   


    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
      

  10.   

    (1)ALTER TABLE tablename  ALTER COLUMN columnname char(8) 注意:当你将列的宽度由6改为8后,char类型会将不足的地方用空格来填充,如果这个字段是用来做查询或什么.要注意(2)怎样创建一个rule,使某一列的值默认值为某个数
    有两种方法:
     一种是在建表时直接创建
     CREATE TABLE 表名
    ( 列1 int not null 
       DEFAULT 1,
    .......
    )
     一种是在建表后创建并绑定到某一列上,要分两步来做
     1.创建默认值
      CREATE DEFAULT phonedflt AS 'unknown'
     2.绑定默认值
      sp_bindefault phonedflt, '表名' 
      

  11.   

    (3)
    select odate as 订单日期,sum(om)as 订单总额,(case when sum(om)>1200 then 'h ' else 'l' end)as 状态 from 表名 group by odate order by odate
      

  12.   

    (一),对于一张已经定义好的表,怎么修改一个列的属性,比如说原来是char(6),现在要改为char(8)。要求sql语句~~~alter table t alter column col1 char(8)
    (二),怎样创建一个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