• group by...


    Create table test (name char(10),km char(10),cj int)
    go
    insert test values('张三','语文',80)
    insert test values('张三','数学',86)
    insert test values('张三','英语',75)
    insert test values('李四','语文',78)
    insert test values('李四','数学',85)
    insert test values('李四','英语',78)

    declare @sql varchar(8000)
    set @sql = 'select name'
    select @sql = @sql + ',sum(case km when '''+km+''' then cj end) ['+km+']'
    from (select distinct km from test) as a
    select @sql = @sql+' from test group by name'
    print(@sql)
    exec(@sql)

    drop table test


    ------------------------------

    select name,
    sum(case km when '数学' then cj end) [数学],
    sum(case km when '英语' then cj end) [英语],
    sum(case km when '语文' then cj end) [语文]

    from test group by name

    结果是执行的中间?
    SQL语句在有WHERE语句存在的时候才从最右边开始执行?

    -----------------------------------------------------------

    IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
          
    WHERE TABLE_NAME = 'author_sales')
       
    DROP TABLE author_sales
    GO
    IF EXISTS(SELECT name FROM sysobjects 
          
    WHERE name = 'get_author_sales' AND type = 'P')
       
    DROP PROCEDURE get_author_sales
    GO
    USE pubs
    CREATE TABLE author_sales
    ( data_source   
    varchar(20),
      au_id         
    varchar(11),
      au_lname      
    varchar(40),
      sales_dollars 
    smallmoney
    )
    GO
    CREATE PROCEDURE get_author_sales 
    AS 
       
    SELECT 'PROCEDURE', authors.au_id, authors.au_lname, 
          
    SUM(titles.price * sales.qty) 
       
    FROM authors INNER JOIN titleauthor 
          
    ON authors.au_id = titleauthor.au_id INNER JOIN titles
          
    ON titleauthor.title_id = titles.title_id INNER JOIN sales
          
    ON titles.title_id = sales.title_id
       
    WHERE authors.au_id like '8%'
       
    GROUP BY authors.au_id, authors.au_lname
    GO
    --INSERTSELECT example
    USE pubs
    INSERT author_sales
       
    SELECT 'SELECT', authors.au_id, authors.au_lname, 
          
    SUM(titles.price * sales.qty) 
       
    FROM authors INNER JOIN titleauthor 
          
    ON authors.au_id = titleauthor.au_id INNER JOIN titles
          
    ON titleauthor.title_id = titles.title_id INNER JOIN sales
          
    ON titles.title_id = sales.title_id
       
    WHERE authors.au_id LIKE '8%'
       
    GROUP BY authors.au_id, authors.au_lname

    --INSERTEXECUTE procedure example
    INSERT author_sales EXECUTE get_author_sales

    --INSERTEXECUTE('string') example
    INSERT author_sales 
    EXECUTE 
    (
    '
    SELECT 
    ''EXEC STRING'', authors.au_id, authors.au_lname, 
       SUM(titles.price * sales.qty) 
       FROM authors INNER JOIN titleauthor 
          ON authors.au_id = titleauthor.au_id INNER JOIN titles
          ON titleauthor.title_id = titles.title_id INNER JOIN sales
          ON titles.title_id = sales.title_id
       WHERE authors.au_id like 
    ''8%''
       GROUP BY authors.au_id, authors.au_lname
    ')

    --Show results.
    SELECT * FROM author_sales



  • 相关阅读:
    前端获取当前路径
    pycharm快捷键
    权限(二)
    权限(1)
    cookie,session,用户认证组件
    装饰器
    admin组件的使用
    thinkphp5.0独立配置
    thinkphp5.0读取配置
    thinkphp5.0配置加载
  • 原文地址:https://www.cnblogs.com/day/p/354967.html
Copyright © 2020-2023  润新知