① sql 行转列
我这里两种都给你介绍,行转列和列转行:
列转行——
录入经营范围时候会遇到列传行的问题解决方案如下:
在temp1 表有一下字段内容:
② 如何实现行转换成列,列转化为行在DB2中如何解决,急!!急!!!急!!!!
你的是什么数据库? sql server数据库: SELECT max(case id when 'a' then s1 end)a, max(case id when 'b' then s1 end)b, max(case id when 'c' then s1 end)c, max(case id when 'd' then s1 end)d FROM T1 union all SELECT max(case id when 'a' then s2 end)a, max(case id when 'b' then s2 end)b, max(case id when 'c' then s2 end)c, max(case id when 'd' then s2 end)d FROM T1 union all SELECT max(case id when 'a' then s3 end)a, max(case id when 'b' then s3 end)b, max(case id when 'c' then s3 end)c, max(case id when 'd' then s3 end)d FROM T1
③ sql 行转列
SELECT
*
FROM ( 你的SQL 放在这里面
) bb PIVOT( MAX(timePoint) FOR PName( [pm2.5], [nox], [.....] ) ) AS pvt
[pm2.5],这种你有一个要列一个。
④ sql如何把行数据变为列数据
看这个..
SQLServer中行转列及列转行且加平均值及汇总值的Sql2000与Sql2005示例http://www.lmwlove.com/ac/ID451
⑤ db2如何实现行列转换
Focusky提供9种图表形式:柱状图、散点图、饼图、折线图、面积图、堆叠图、雷达图、混合图、南丁格尔玫瑰图和表格。每种图表的表格都可以进行行列转换。那么,Focusky怎么实现表格的行列转换呢?下面,小编就为大家介绍一下Focusky表格行列转换方法。
1、选中图表,然后点击“编辑数据”进入图数据界面
2、单击转换按钮,进行表格行列转换
以上就是关于“Focusky怎么实现表格的行列转换”的方法介绍,希望对大家有所帮助哦!
⑥ sql语句行转列 怎么转啊
--声明变量
declare@sqlvarchar(1000),@num_dataint,@num_allvarchar(2000),@num_numint,@table_sqlvarchar(2000)
set@num_num=0
--判断并创建表
ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[records]')andOBJECTPROPERTY(id,N'IsUserTable')=1)
droptable[dbo].[records]
createtablerecords(
[id]int,
[name]varchar(50),
[sex]varchar(10),
[num]int
)
--插入数据
insertintorecordsvalues(1,'tom','男',2)
insertintorecordsvalues(1,'tom','男',3)
insertintorecordsvalues(1,'tom','男',4)
insertintorecordsvalues(1,'tom','男',5)
--全选表中数据
select*fromrecords
--全选num列数据
selectnumas'数据'fromrecords
--释放游标
deallocateselect_num
--为‘selectnumfromrecords’建立游标
declareselect_numscrollcursorforselectnumas'shuju'fromrecords
--打开游标
openselect_num
--获得第一条数据
fetchnextfromselect_numinto@num_data
set@num_all=convert(varchar,@num_data)+','
set@num_num=@num_num+1;
--如果获取成功,继续获得数据
while@@fetch_status=0
begin
fetchnextfromselect_numinto@num_data
set@num_num=@num_num+1;
set@num_all=@num_all+convert(varchar,@num_data)+','
end
--关闭游标
closeselect_num
print@num_num
--set@num_num=@num_num-1;
declare@iint
set@i=1
print@num_num
print@i
set@table_sql='createtablenumall(idint,namevarchar(50),sexvarchar(10)'
print@table_sql
while@num_num>=1
begin
set@table_sql=@table_sql+',num'+convert(varchar,@i)+'int'
set@num_num=@num_num-1;
set@i=@i+1
end
set@table_sql=@table_sql+')'
print@table_sql
ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[numall]')andOBJECTPROPERTY(id,N'IsUserTable')=1)
droptable[dbo].[numall]
exec(@table_sql)
declare@insert_sqlvarchar(2000)
set@insert_sql='insertintonumallvalues(1,'+'''tom'','+'''男'''
print@insert_sql
openselect_num
--获得第一条数据
fetchnextfromselect_numinto@num_data
set@insert_sql=@insert_sql+','+convert(varchar,@num_data)
--如果获取成功,继续获得数据
while@@fetch_status=0
begin
fetchnextfromselect_numinto@num_data
set@insert_sql=@insert_sql+','+convert(varchar,@num_data)
end
set@insert_sql=@insert_sql+')'
print@insert_sql
exec(@insert_sql)
--insertintonumallvalues(1,'tom','男',2,3,4,5,5)
select*fromnumall
试试吧,数据虽然有点出入,但已经说明问题了!!!
⑦ sql行转列
SELECT e.NAME as name,
count(case when DATEPART(year,c.START_TIME)=2014 then 1 else null end ) as count2014,
count(case when DATEPART(year,c.START_TIME)=2015 then 1 else null end ) as count2015
from ENVI_DATA_STATISTIC_COMP c
LEFT JOIN ENVI_CITY e on e.CITY_ID=c.CITY_ID
where c.COMP_NAME like '%蓝天白云%' and INDEX_TYPE='12'
and (c.START_TIME like '%2014-08%' or c.START_TIME like '%2015-08%' ) and STATISTIC_TYPE='1' and c.VALID_FLAG='1'
group by name
应该是酱紫的,使用case when 转换~
⑧ sql 用select语句进行行转列
我们来看看一个小列子。有一个游戏玩家充值表(仅仅为了说明,举的一个小例子),
CREATETABLE[Inpours]
(
[ID]INTIDENTITY(1,1),
[UserName]NVARCHAR(20),--游戏玩家
[CreateTime]DATETIME,--充值时间
[PayType]NVARCHAR(20),--充值类型
[Money]DECIMAL,--充值金额
[IsSuccess]BIT,--是否成功1表示成功,0表示失败
CONSTRAINT[PK_Inpours_ID]PRIMARYKEY(ID)
)
INSERTINTOInpoursSELECT'张三','2010-05-01','支付宝',50,1
INSERTINTOInpoursSELECT'张三','2010-06-14','支付宝',50,1
INSERTINTOInpoursSELECT'张三','2010-06-14','手机短信',100,1
INSERTINTOInpoursSELECT'李四','2010-06-14','手机短信',100,1
INSERTINTOInpoursSELECT'李四','2010-07-14','支付宝',100,1
INSERTINTOInpoursSELECT'王五','2010-07-14','工商银行卡',100,1
INSERTINTOInpoursSELECT'赵六','2010-07-14','建设银行卡',100,1
下面来了一个统计数据的需求,要求按日期、支付方式来统计充值金额信息。这也是一个典型的行转列的例子。我们可以通过下面的脚本来达到目的
SELECT
CreateTime,[支付宝],[手机短信],
[工商银行卡],[建设银行卡]
FROM
(
SELECTCONVERT(VARCHAR(10),CreateTime,120)ASCreateTime,PayType,Money
FROMInpours
)P
PIVOT(
SUM(Money)
FORPayTypeIN
([支付宝],[手机短信],[工商银行卡],[建设银行卡])
)AST
ORDERBYCreateTime
⑨ SQL语句行转列
根据楼主的描述,特为楼主总结如下,在SqlServer里面行列转换的语法一般是: select 字段, sum(case when 要转换的行单元格的字段名='行字段内容' then 聚合的字段名 end ) as 自定义的列标题1 from 表的名字 group by 字段(注意,分组聚合就是根据这个字段来的,具体到楼主的问题,这里的字段就应该是org_id) 如果有多个列,之间用逗号隔开就可以了,最后一个参数和from之间不要用逗号。 具体到楼主的显示效果就可以这样写了。代码参考如下: Select org_id , sum(case when channel ='团险' then PREM end) As '团险保费' , sum(case when channel ='个险' then PREM end) As '个险保费 From 你的表名 Group By org_id
⑩ db2 SQl语句行变列的问题
SELECT
MAX(CASE month WHEN '201201' THEN acount ELSE null END) AS '201201',
MAX(CASE month WHEN '201202' THEN acount ELSE null END) AS '201202' ,
MAX(CASE month WHEN '201203' THEN acount ELSE null END) AS '201203'
FROM (你的这个结果集或则表名称)
还有你如果想得到201201这个俩行结果,那么你还得提供一个字段区分它们,进行分组