
你这是查询的交换是交换的,还是生成一个两列交换了的新表若是生成新表:create table newtable(title,starttimie,endtime) as select title,endtime,starttimie from oldtable;
输入以下公式,然后向下填充公式
=OFFSET($A,INT((ROW(A1)-1)/4),MOD(ROW(A1)-1,4))
详见附图示例
建个函数把
CREATE FUNCTION GetYQStringFromID(@AID nvarchar(100))
RETURNS nvarchar(1024)
AS
BEGIN
declare @Str varchar(1024)
set @str=''
select distinct @Str=@Str + 仪器 +''+cast(数量 as nvarchar(5))+' '
from a表
where ID=@AID
return @Str
END
然后查询
select ID,GetYQStringFromID(ID)as 仪器
from (select distinct ID from a表)a
效果为
ID 仪器
120 A2 C1 D2;
330 B3
112 A2
虽然只有两列,但显示的效果类似
如果用函数的办法比较麻烦 我想了个办法 你试试
select A1其他字段,A1B CC,A1C BB FROM(SELECT 其他字段,BB B,CC C FROM AA) A1 ;
这个结果会达到你的要求,但是如果在这张表改变的话 还要做些工作,是有点麻烦了
如果用函数的话
你需要定义一个游标,然后遍历 ,然后把那两个字段调换下位置, 还要删除那行 ,然后插入新行
这个问题是关系表和非关系表的一个区别,在关系表中任意交换两行或两列的顺序,是不会丢失任何信息的,表中的任意两行都不重复,否则这个表就不是关系表。举个例子,学生表里存储了每个学生的信息,任意交换两行或两列,学生的信息不会丢失,这样的表就是关系表。
以上就是关于sql 两列数据交换全部的内容,包括:sql 两列数据交换、excel表格行列互换如何依次把每四行换成一列、sql数据库中建立一个视图怎样把一张表的列值转换成另一张表的行值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)