• SQL行转列+动态拼接SQL


    数据源      
    Name AreaName qty Specific
    叶玲 1 60 1
    叶玲 2 1 1
    叶玲 6 1 0
    叶玲 7 5 0
    叶玲 8 1 1

    显示效果:

    Name 1 2 8 其它 总数
    叶玲 60 1 1 6 68

    规则:

    Specific=1的要单独统计,Specific=0的合并统计

    --> 测试数据:#tb IF OBJECT_ID('tempdb.dbo.#tb') IS NOT NULL DROP TABLE #tb GO CREATE TABLE #tb([Name] VARCHAR(4),[AreaName] INT,[qty] INT,[Specific] INT) INSERT #tb SELECT '叶玲',1,60,1 UNION ALL SELECT '叶玲',2,1,1 UNION ALL SELECT '叶玲',6,1,0 UNION ALL SELECT '叶玲',7,5,0 UNION ALL SELECT '叶玲',8,1,1 --------------开始查询--------------------------

    SELECT * FROM #tb AS T

    declare @sql varchar(max)

    select @sql=isnull(@sql+','+CHAR(13),'')+'sum(case when [AreaName]='+LTRIM([AreaName])+' then [qty] else 0 end) as '+QUOTENAME([AreaName]) from #tb WHERE [Specific]=1 GROUP BY [AreaName]

    select @sql=@sql+','+CHAR(13)+'sum(case when [Specific]=0 then [qty] else 0 end) as '+QUOTENAME('其它') SELECT @sql='select [Name],'+@sql+',sum([qty]) as [总数] from #tb group by Name'

    EXEC(@sql)

  • 相关阅读:
    ios 统一设计,iOS6也玩扁平化
    iOS百度地图
    iOS 下载
    oracle 表连接
    ORACLE的执行计划
    oracle11g dataguard 完全手册(转)
    pl/sql 中F8执行单行sql
    Oracle AWR 报告详解
    Oracle执行计划详解
    oracle常用函数以及调用入参为record的存储过程的方法,
  • 原文地址:https://www.cnblogs.com/pato/p/3335248.html
Copyright © 2020-2023  润新知