行列转化中的问题?

yyanzh 2011-04-22 03:08:23
A表
编号 姓名 性别 种植产品
1 王一 男 苹果
1 王二 女 梨子
2 张一 女 苹果
3 宋一 女 苹果
3 宋二 男 梨子

经过行列转化实现如下表():
编号 姓名一 种植产品一 姓名二 种植产品二
1 王一 苹果 王二 梨子
2 张一 梨子 null null
3 宋一 苹果 宋二 梨子
...全文
73 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyanzh 2011-04-22
  • 打赏
  • 举报
回复
能不能不加ROW_NUMBER()进行实现啊! 数据太大了,加个排序查询的时间太长!
--小F-- 2011-04-22
  • 打赏
  • 举报
回复
----------------------------------------------------------------
-- Author :fredrickhu(小F,向高手学习)
-- Date :2011-04-22 15:13:00
-- Verstion:
-- Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Enterprise Evaluation Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([编号] int,[姓名] varchar(4),[性别] varchar(2),[种植产品] varchar(4))
insert [tb]
select 1,'王一','男','苹果' union all
select 1,'王二','女','梨子' union all
select 2,'张一','女','苹果' union all
select 3,'宋一','女','苹果' union all
select 3,'宋二','男','梨子'
--------------开始查询--------------------------
select
编号,
MAX(case id when 1 then 姓名 else '' end) as 姓名1,
MAX(case id when 1 then 种植产品 else '' end) as 姓名1,
MAX(case id when 2 then 姓名 else '' end) as 姓名2,
MAX(case id when 2 then 种植产品 else '' end) as 种植产品2
from
(select ID=ROW_NUMBER()over(partition by 编号 order by GETDATE()),* from tb)t
group by
编号
----------------结果----------------------------
/* 编号 姓名1 姓名1 姓名2 种植产品2
----------- ---- ---- ---- -----
1 王一 苹果 王二 梨子
2 张一 苹果
3 宋一 苹果 宋二 梨子

(3 行受影响)
*/
快溜 2011-04-22
  • 打赏
  • 举报
回复
select 编号, max(case when no=1 then 姓名 end) [姓名一],max(case when no=1 then 种植产品 end) [种植产品一],
max(case when no=2 then 姓名 end) [姓名二],max(case when no=2 then 种植产品 end) [种植产品二]
from (select row_number() over(partition by 编号 order by getdate())no,* from tb) a
group by 编号
--小F-- 2011-04-22
  • 打赏
  • 举报
回复
加个排序 再行转列
yyanzh 2011-04-22
  • 打赏
  • 举报
回复
不好意思,呵呵,A表中张一的种植产品应该是梨子,前面的表中打错了!

34,592

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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