如何从SQL Server数据库制作R代码?

时间:2017-08-01 10:21:11

标签: sql-server

在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)

2 个答案:

答案 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