“未来的世界:方向比努力重要,能力比知识重要,健康比成绩重要,生活比文凭重要,情商比智商重要! ”    ——清华大学校长留给毕业生的一段话

发布新日志

  • SQL语句中,Group by

    2010-03-17 22:37:05

    你的里面用到了Sum函数 这是个聚合函数 就必须要使用到group by  那么其他非聚合函数的列都要加到group by 中去。

    补充 有个折中的方法 可以不用写这么多
    打个比方(你的例子太长,表太多,我自己找个简单的例子):
    a表
    id name
    1   jim
    2   kate

    b
    id  money
    1    100
    1    40
    2    40
    2    50
    我要求id name money
    按照你的写法是:
    select a.id,a.name,sum(b.money)
    from a inner join b on a.id=b.id grop by a.id,a.name;

    这样group by 后面有2个

    而我的写法:
    select a.id,a.name,test.total from
    a inner join (select id,sum(money) as total form. b group by id) test
    on a.id=test.id;
    这样 group by 后面就只有一个列。
  • Sql 中Top用法

    2010-03-17 22:33:50

    问题:

    在SQL 中top n*可以查出前N条记录,我现在想把N用表达式表示出来 。

     

    解答:

    TOP后面是不能跟表达式的,如果你必须在SQL中通过计算获得n值的话 可以像下面这么写

    declare @n int , @i int
    set @i=5
    set @n=(@i-1)*@i
    execute ('select top ' + @n +' * from table1')

    Tips:

    top 5是只取5行,
    top 5 with ties×是把和这5行有相同数据的行也取出来

Open Toolbar