本帖最后由 lixiaolian7 于 2012-11-15 06:31:22 编辑

解决方案 »

  1.   

    技术有限,搞的很复杂,期待高手
    CREATE TABLE TBA
    (
    id int,
    et nvarchar(50),   
    name1 nvarchar(50),
    content1 nvarchar(50),
    option1 nvarchar(50),
    total int
    )
    drop table TBA
    INSERT INTO TBA
    select '101','区内市场','黑龙江','加油站排队情况','经常排队',42 union
    select '101','区内市场','黑龙江','加油站排队情况','分时段排队',21 union
    select '101','区内市场','黑龙江','加油站排队情况','无排队',353 union
    select '101','区内市场','黑龙江','是否限量销售','汽柴油均限量',46 union
    select '101','区内市场','黑龙江','是否限量销售','只有汽油限量',9 union
    select '101','区内市场','黑龙江','是否限量销售','只有柴油限量',455 union
    select '101','区内市场','黑龙江','是否限量销售','无限量销售',6 union
    select '101','区内市场','黑龙江','断档情况','只有汽油出现断档',13 union
    select '101','区内市场','黑龙江','断档情况','只有柴油出现断档',17 union
    select '101','区内市场','黑龙江','断档情况','无断档',455 union
    select '101','区内市场','黑龙江','断档情况','汽柴油均出现断档',31 union
    select '101','区内市场','黑龙江','脱销情况','汽柴油均出现脱销',NULL union
    select '101','区内市场','黑龙江','脱销情况','只有汽油出现脱销',2 union
    select '101','区内市场','黑龙江','脱销情况','只有柴油出现脱销',513 union
    select '101','区内市场','黑龙江','脱销情况','无脱销',1 union
    select '101','区内市场','黑龙江','加油站是否停业检修','否',24 union
    select '101','区内市场','黑龙江','加油站是否停业检修','是',35select A.*,convert(nvarchar(8),convert(numeric(18,2),convert(numeric(18,2),isnull(A.total,0))/convert(numeric(18,2),B.NUM) )* 100) 
    + '%' 百分比 from TBA A,
    (select SUM(total) as NUM,content1 from TBA  group by content1) B 
    where A.content1=B.content1101 区内市场 黑龙江 加油站是否停业检修 否 24 41.00%
    101 区内市场 黑龙江 加油站是否停业检修 是 35 59.00%
    101 区内市场 黑龙江 加油站排队情况 分时段排队 21 5.00%
    101 区内市场 黑龙江 加油站排队情况 经常排队 42 10.00%
    101 区内市场 黑龙江 加油站排队情况 无排队 353 85.00%
    101 区内市场 黑龙江 断档情况 汽柴油均出现断档 31 6.00%
    101 区内市场 黑龙江 断档情况 无断档 455 88.00%
    101 区内市场 黑龙江 断档情况 只有柴油出现断档 17 3.00%
    101 区内市场 黑龙江 断档情况 只有汽油出现断档 13 3.00%
    101 区内市场 黑龙江 是否限量销售 汽柴油均限量 46 9.00%
    101 区内市场 黑龙江 是否限量销售 无限量销售 6 1.00%
    101 区内市场 黑龙江 是否限量销售 只有柴油限量 455 88.00%
    101 区内市场 黑龙江 是否限量销售 只有汽油限量 9 2.00%
    101 区内市场 黑龙江 脱销情况 汽柴油均出现脱销 NULL 0.00%
    101 区内市场 黑龙江 脱销情况 无脱销 1 0.00%
    101 区内市场 黑龙江 脱销情况 只有柴油出现脱销 513 99.00%
    101 区内市场 黑龙江 脱销情况 只有汽油出现脱销 2 0.00%
      

  2.   

    CREATE TABLE TBA
    (
    id int,
    et nvarchar(50),   
    name1 nvarchar(50),
    content1 nvarchar(50),
    option1 nvarchar(50),
    total int
    )
    --drop table TBA
    --上面那句启不让后面都出错
      

  3.   

    if OBJECT_ID('TB') is not null drop table TB 
    CREATE TABLE TB
    (
    id int,et nvarchar(50),   
    name1 nvarchar(50),
    content1 nvarchar(50),
    option1 nvarchar(50),
    total int
    )
    INSERT INTO TB 
    select '101','区内市场','黑龙江','加油站排队情况','经常排队',42 union
    select '101','区内市场','黑龙江','加油站排队情况','分时段排队',21 union
    select '101','区内市场','黑龙江','加油站排队情况','无排队',353 union
    select '101','区内市场','黑龙江','是否限量销售','汽柴油均限量',46 union
    select '101','区内市场','黑龙江','是否限量销售','只有汽油限量',9 union
    select '101','区内市场','黑龙江','是否限量销售','只有柴油限量',455 union
    select '101','区内市场','黑龙江','是否限量销售','无限量销售',6 union
    select '101','区内市场','黑龙江','断档情况','只有汽油出现断档',13 union
    select '101','区内市场','黑龙江','断档情况','只有柴油出现断档',17 union
    select '101','区内市场','黑龙江','断档情况','无断档',455 union
    select '101','区内市场','黑龙江','断档情况','汽柴油均出现断档',31 union
    select '101','区内市场','黑龙江','脱销情况','汽柴油均出现脱销',NULL union
    select '101','区内市场','黑龙江','脱销情况','只有汽油出现脱销',2 union
    select '101','区内市场','黑龙江','脱销情况','只有柴油出现脱销',513 union
    select '101','区内市场','黑龙江','脱销情况','无脱销',1 union
    select '101','区内市场','黑龙江','加油站是否停业检修','否',24 union
    select '101','区内市场','黑龙江','加油站是否停业检修','是',35select t.*,convert(varchar(10),convert(numeric(10,2),convert(numeric(10,2),isnull(t.total,0))/CONVERT (numeric(10,2),a.total))*100)+'%' 百分比
    from TB as t,(select SUM(total) as total,content1 from TB group by content1) as a