要得到这样的数据 SQL怎么写?

net_08 2011-07-21 02:24:35

一个表数据如下:
ID Price
1 30
2 49
4 12
.....

想得到如果下数据:


1 2 3 4
30 49 NULL 12

如果没数据自动填充NULL值的行转列怎么写,应该要写成动态吧。


...全文
48 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-07-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 happyflystone 的回复:]
改改:

SQL code

declare @s varchar(8000)

select @s=isnull(@s+',','')+'['+cast([id] as varchar)+']=max(case when id='+cast([id] as varchar)+' then Price else NULL end)'
from(select number as id ……
[/Quote]
++
-狙击手- 2011-07-21
  • 打赏
  • 举报
回复
改改:
declare @s varchar(8000)

select @s=isnull(@s+',','')+'['+cast([id] as varchar)+']=max(case when id='+cast([id] as varchar)+' then Price else NULL end)'
from(select number as id from master..spt_values where type = 'P' and number >0 and number <=(select max(id) from ta))a
exec('select '+ @s+' from ta ')
go
GoAwayZ 2011-07-21
  • 打赏
  • 举报
回复
create table tb(id int,price int)
insert into tb
select 1,10 union select 2,20 union
select 3,70 union select 9,30 union
select 5,60 union select 8,40


declare @sql varchar(8000),@max int,@min int
select @max=MAX(id),@min=MIN(id) from tb
set @sql = ''
select @sql = @sql + ',max(case id when ' + rtrim(number) + ' then price end) [' + rtrim(number) + ']'
from master..spt_values where number between @min and @max and type='p'
set @sql = 'select '+stuff(@sql,1,1,'') + ' from tb '
exec(@sql)

/*
1 2 3 4 5 6 7 8 9
----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
10 20 70 NULL 60 NULL NULL 40 30
警告: 聚合或其他 SET 操作消除了 Null 值。

(1 行受影响)
cd731107 2011-07-21
  • 打赏
  • 举报
回复
先利用master..spt_values表左连上面的表得到一个连续的记录集,
再行转列
-狙击手- 2011-07-21
  • 打赏
  • 举报
回复
行列转换的例子,在精华里多的是
数据分析,数据科学及AI算法是当前最热门的职业。这些职业有着共同的特点:面向数字的,针对编程的以及采取分析手段的。 这些当代热点特性使得在就业市场上对以上职位需求激增也就不足为奇了。但是,市场上提供这方面的大型综合的培训课程是有限,如果说有,大多是知识范围狭窄且非综合性的,而且大多培训都缺乏方法论与实务结合。一般的情况是讲师讲述某种语言的一堆代码,学生听完后甚至连使用方法及代码的前提都不清楚,更别提实际应用场景了。这里,掌握一门数据分析软件本身没错,但仅通过单一的编程培训很难获得聘用为数据分析师或数据科学家所需的技能。那我的解决方案是什么呢?首先,我把所有数据分析中的典型问题都归类总结出来,再结合相应的实际问题,数据以及案例,同时采用世界上最流行的两种数据分析软件:PYTHON 和 SAS去解决这些问题,并将这些解决方法传授给学生。学生在完成培训后更重要的收获是知道每一问题从产生直至解决的前因后果和应用场景,这是因为我在每一课程章节最前都会交代方法论,知识要点及应用场合。SAS和PYTHON可以一起学吗?当然可以。因为我就是这样做到的。具体步骤是,我在课程当中安排了一系列主题,然后使用两种编程语言解决同样的问题。我总结出这样做的好处是边学习边比较,最后在不知不觉当中掌握了两门语言的精华和数据分析的通用方法或模式。过程虽有点长,但十分有趣。最后,为了巩固已学的知识和技能,我还专门安排了针对PYTHON 和 SAS的中小型项目及详细代码讲解。另外,课程当中使用的全部编程代码及数据文件都将免费地提供给注册的学生。

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧