急急急sqlserver怎么把行转成列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了急急急sqlserver怎么把行转成列相关的知识,希望对你有一定的参考价值。

declare @sql varchar(5000),@totalLength int,@length int,@tag varchar(20),@currentNumber int

set @sql='1,2,3,4,5,6,7,'
set @tag=','
set @totalLength=len(@sql)

set @length=charindex(@tag,@sql)
print '第1条记录: '+left(@sql,@length-1)
set @sql=substring(@sql,@length+1,@totalLength)
set @currentNumber=1
while (@length>0)
begin
set @currentNumber=@currentNumber+1
set @length=charindex(@tag,@sql)
if(@length=0)
begin
break;
end
print '第'+ltrim(str(@currentNumber))+'条记录:'+left(@sql,@length-1)
set @sql=substring(@sql,@length+1,@totalLength)
end
参考技术A 呵呵,动态属性?如果"动态"的话,你还是在应用层做行转列的动作比较好。
在database段写死就不好了。
参考技术B 拼sql吧
行列转化,写成死的不好,动态的去拼下就可以了

SQL中怎么将行转成列?

文章目录

天天这需求就神奇!!!!

SQL中怎么将行转成列?

我们以MySQL数据库为例,来说明行转列的实现方式。
首先,假设我们有一张分数表(tb_score),表中的数据如下图:


然后,我们再来看一下转换之后需要得到的结果,如下图:


可以看出,这里行转列是将原来的subject字段的多行内容选出来,作为结果集中的不同列,并根据userid进行分组显示对应的score。通常,我们有两种方式来实现这种转换。

1. 使用 CASE…WHEN…THEN 语句实现行转列,参考如下代码:

SELECT userid, 
SUM(CASE `subject` WHEN '语文' THEN score ELSE 0 END) as '语文', 
SUM(CASE `subject` WHEN '数学' THEN score ELSE 0 END) as '数学', 
SUM(CASE `subject` WHEN '英语' THEN score ELSE 0 END) as '英语', 
SUM(CASE `subject` WHEN '政治' THEN score ELSE 0 END) as '政治' 
FROM tb_score 
GROUP BY userid

注意,SUM() 是为了能够使用GROUP BY根据userid进行分组,因为每一个userid对应的
subject="语文"的记录只有一条,所以SUM() 的值就等于对应那一条记录的score的值。假如userid ='001' and subject='语文' 的记录有两条,则此时SUM() 的值将会是这两条记录的和,同理,使用Max()的值将会是这两条记录里面值最大的一个。但是正常情况下,一个user对应一个subject只有一个分数,因此可以使用SUM()、MAX()、MIN()、AVG()等聚合函数都可以达到行转列的效果。

2. 使用 IF() 函数实现行转列,参考如下代码:

SELECT userid, 
SUM(IF(`subject`='语文',score,0)) as '语文', 
SUM(IF(`subject`='数学',score,0)) as '数学', 
SUM(IF(`subject`='英语',score,0)) as '英语', 
SUM(IF(`subject`='政治',score,0)) as '政治' 
FROM tb_score 
GROUP BY userid

注意, IF(subject='语文',score,0) 作为条件,即对所有subject='语文’的记录的score字段进行SUM()、MAX()、MIN()、AVG()操作,如果score没有值则默认为0。

以上是关于急急急sqlserver怎么把行转成列的主要内容,如果未能解决你的问题,请参考以下文章

SQL中怎么将行转成列?

SQLServer pivot 行转列

怎样把DataTable中的一列数据转换成数组

sql server数据库连接的问题 急急急!!!

sql 行转列

SQL server 怎么查看数据库 下面这个问题怎么解决呢 看不了MDF和LDF文件 我是电脑白痴 急急急!!!!