首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

行列转化有关问题

2013-09-28 
行列转化问题citydianhaonameprice北京1西瓜12上海1西瓜11南昌1西瓜10上海1冬瓜13武汉1冬瓜12上海2冬瓜11

行列转化问题


    city    dianhao  name    price
    北京     1       西瓜     12
    上海     1       西瓜     11
    南昌     1       西瓜     10
    上海     1       冬瓜     13
    武汉     1       冬瓜     12

    上海     2       冬瓜     11
    武汉     2       冬瓜     10
..........
.......
转化成
动态生成......
  dianhao     在北京是否有(西瓜)  在上海是否有(西瓜)  (西瓜)的最低价格     在北京是否有(冬瓜)  在上海是否有(冬瓜)    (冬瓜)的最低价格

1             1         1            10        0   1    12 (此价格是此dianhao里面最低的)            
2             0         0            null      0   1    10

(西瓜)这个是变量 还有很多 比如黄瓜什么的.. 表头只要北京  上海  其他城市只拿最低价格。







[解决办法]
declare @s varchar(max)
set @s=''
 
Select    @s=@s+','+quotename('在'+city+'是否有'+name)+'=max(case when [city]='+quotename(city,'''')+' and name= '+quotename(name,'''')+' then 1 else null end)'
--+','+quotename(name+'最低价格')+'=min(case when name= '+quotename(name,'''')+' then price else null end)'
from [huang] group by city,name
SELECT @s=@s+','+quotename(name+'最低价格')+'=min(case when name= '+quotename(name,'''')+' then price else null end)'
FROM [huang]
GROUP BY name
exec('select [dianhao] '+@s+' from [huang] group by [dianhao]')
/*
dianhao     在北京是否有西瓜    在南昌是否有西瓜    在上海是否有冬瓜    在上海是否有西瓜    在武汉是否有冬瓜    冬瓜最低价格      西瓜最低价格
----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
1           1           1           1           1           1           12          10
2           NULL        NULL        1           NULL        1           10          NULL
*/

热点排行