比较一个表中两条数据不同列转换成行显示???

修改一下昵称 2012-05-09 07:28:27
比较一个表中两条数据,两条数据对比 列中值不同的转换成行显示
DECLARE @table table(ID INT,Name VARCHAR(30),Title VARCHAR(50),Contact VARCHAR(50),Phone VARCHAR(50),Remark VARCHAR(500))
INSERT INTO @table
SELECT 1,'abc','123','张山','123456789','we' UNION ALL
SELECT 2,'abc','234','张三','123456789','we'

--想得到这样的结果
/*
ColumnName Value1 Value2
---------- ------ ------
Title 123 234
Contact 张山 张三
*/

--假如@table 表中有几十上百个字段怎么实现?


...全文
99 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
修改一下昵称 2012-05-09
  • 打赏
  • 举报
回复
大侠们,来帮帮忙吧
修改一下昵称 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
SQL code


DECLARE @table table(ID INT,Name VARCHAR(30),
Title VARCHAR(50),Contact VARCHAR(50),Phone VARCHAR(50),Remark VARCHAR(500))
INSERT INTO @table
SELECT 1,'abc','123','张山','123456789','we……
[/Quote]

如果我有不明确这个表里面有哪些字段或者多少字段,就给我一个表名和两个ID(也就是两条数据) 找出不同列的值这样显示。怎么实现?
  • 打赏
  • 举报
回复

DECLARE @table table(ID INT,Name VARCHAR(30),
Title VARCHAR(50),Contact VARCHAR(50),Phone VARCHAR(50),Remark VARCHAR(500))
INSERT INTO @table
SELECT 1,'abc','123','张山','123456789','we' UNION ALL
SELECT 2,'abc','234','张三','123456789','we'

select ColumnName ='Title',* from(
SELECT 'Value'+LTRIM(ID)as value,Title FROM @table)t
pivot (max([Title]) for value in([Value1],[Value2]))s
union all
select ColumnName ='Contact',* from(
SELECT 'Value'+LTRIM(ID)as value,Contact FROM @table)t
pivot (max(Contact) for value in([Value1],[Value2]))s

/*
ColumnName Value1 Value2
Title 123 234
Contact 张山 张三
*/

22,207

社区成员

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

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