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



  • 相关阅读:
    Dynamics AX
    专注于领域驱动设计的研究与实践系列转载
    在C#里使用属性,如Obsolete,Serializable,XmlRoot
    SQL 2005 with(nolock)详解
    Microsoft Domain Oriented NLayered .NET 4.0 App Sample (DDD Architecture)
    使用 .NET4 中的Task优化线程池【.NET4 多核并行】
    实现简单DTO适配器,解放你的双手
    最强悍的VS插件—reSharper
    通过代码配置 Log4net
    Microsoft NLayerApp案例理论与实践–DDD、分布式DDD及其分层【转】
  • 原文地址:https://www.cnblogs.com/day/p/354967.html
Copyright © 2011-2022 走看看