zoukankan      html  css  js  c++  java
  • 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



  • 相关阅读:
    【Qt】Qt5.12连接MySQl5.7(亲自测试成功)
    【Qt】Qt5.12编译MySQl5.7驱动(亲自测试成功)
    【网络安全】十三款流行无线黑客工具介绍
    微信公众号教程(15)公司通讯录开发 下
    微信公众号教程(14)公司通讯录开发 中
    微信公众号教程(13)公司通讯录开发 上
    微信公众号教程(12)公众账号接收非文字消息 下
    微信公众号教程(11)公众账号接收非文字消息 上
    微信公众号教程(10)公众账号自定义回复功能
    微信公众号教程(9)公众账号发送欢迎图文消息
  • 原文地址:https://www.cnblogs.com/day/p/354967.html
Copyright © 2011-2022 走看看