zoukankan      html  css  js  c++  java
  • 透视表处理方案研究

    IF EXISTS (
    SELECT *
    FROM sys.objects
    WHERE OBJECT_ID = OBJECT_ID(N'[dbo].[TB_Student]')
    AND TYPE IN (N'U')
    )
    DROP TABLE [dbo].[TB_Student]
    GO

    CREATE TABLE TB_Student
    (
    S_Name NVARCHAR(50),
    B_Name NVARCHAR(50),
    S_No INT
    )

    INSERT TB_Student
    (
    S_Name,
    B_Name,
    S_No
    )
    SELECT '小王',
    'Excel教材',
    10
    UNION ALL
    SELECT '小李',
    'Excel教材',
    15
    UNION ALL
    SELECT '小王',
    'Word教材',
    8
    UNION ALL
    SELECT '小李',
    'Excel教材',
    7
    UNION ALL
    SELECT '小王',
    'Excel教材',
    9
    UNION ALL
    SELECT '小李',
    'Excel教材',
    2
    UNION ALL
    SELECT '小王',
    'Word教材',
    3
    UNION ALL
    SELECT '小李',
    'Excel教材',
    5

    SELECT v.*,
    m.SUM
    FROM (
    SELECT S_NAME,
    ISNULL(Excel教材, 0) 'Excel教材',
    ISNULL(Word教材, 0) 'Word教材'
    FROM TB_Student
    PIVOT(SUM(S_No) FOR B_Name IN (Excel教材, Word教材)) AS
    pvt
    ) v
    INNER JOIN (
    SELECT S_NAME,
    SUM(S_No) [SUM]
    FROM TB_Student
    GROUP BY
    S_NAME
    ) m
    ON v.S_NAME = m.S_NAME

    DECLARE @sql NVARCHAR(1000)
    SET @sql = 'SELECT S_Name, '
    SELECT @sql = @sql + 'sum(case B_Name when ' + QUOTENAME(B_Name, '''') +
    ' then S_No else 0 end) as ' + QUOTENAME(B_Name) + ','
    FROM TB_Student
    GROUP BY B_Name

    SELECT @sql = LEFT(@sql, LEN(@sql) -1)
    SELECT @sql = @sql + ', sum(S_No) as [sum] from TB_Student group by [S_Name]'
    SELECT @sql
    EXEC (@sql)

  • 相关阅读:
    dijkstra最短路算法--模板
    k8s ansible自动化部署
    k8s persistenvolume 动态供给
    k8s 1.12二进制部署
    k8s 1.14.1 coredns部署
    django单表操作,增、删、改、查
    数据库基础
    TCP/IP协议 socket
    面向对象的程序设计
    模块
  • 原文地址:https://www.cnblogs.com/fery/p/1865769.html
Copyright © 2011-2022 走看看