在SQL Server和Microsoft SQL Server Management Studio中,如何从数据库中读取数据并从中生成R代码?例如,如果我有数据
f1 f2
1 2
3 4
5 6
如何进行查询以返回
f1=c(1,3,5)
f2=c(2,4,6)
答案 0 :(得分:1)
像这样的东西。请注意,ORDER BY是必需,并且必须按行生成完整排序(即键)的列指定顺序,否则SQL可以自由生成列向量订单不同。
因此假设f1是表中的唯一列,因此按f1排序会产生一致的,完整的行排序:
declare @t table(f1 int, f2 int)
insert into @t values (1,2),(3,4),(5,6)
declare @rcode nvarchar(max) =
concat(
'f1=c(', STUFF( (SELECT concat(',', f1)
FROM @t
ORDER BY f1
FOR XML PATH('')),1, 1, ''),')
f2=c(', STUFF( (SELECT concat(',', f2)
FROM @t
ORDER BY f1
FOR XML PATH('')),1, 1, ''),')'
)
select @rcode
输出
f1=c(1,3,5)
f2=c(2,4,6)
答案 1 :(得分:1)
试试这个。一个自容器示例,因为您没有指定表名;
create table #data
(
f1 int,
f2 int
)
insert into #data
select 1,2
union
select 3,4
union
select 5,6
select top 1
F1=case when isnull(Attribute,'')<>'' then left(Attribute,len(Attribute)-1) else '' end,
F2=case when isnull(Attribute2,'')<>'' then left(Attribute2,len(Attribute2)-1) else '' end
from
#data
cross apply
(
select distinct
CAST(f1 as varchar(10)) + ','
from
#data
FOR XML PATH('')
) cleaned (Attribute)
cross apply
(
select distinct
CAST(f2 as varchar(10)) + ','
from
#data
FOR XML PATH('')
) cleaned2 (Attribute2)
begin try
drop table #data
end try
begin catch
end catch