结果超出了要列出的SQL

结果超出了要列出的SQL,sql,r,teradata,Sql,R,Teradata,我有一个csv格式的SQL数据集,这是表/数据结构 Order ID Items O1 Beer O1 Wine O2 Beer O2 Wine O3 Beer O4 Chips 我需要将R中的这个转换为以下格式 O1 Beer,Wine O3 Beer,Chips 感谢您的帮助 我尝试了以下方法: # MOCK DAtA o1 <- c("be

我有一个csv格式的SQL数据集,这是表/数据结构

Order ID     Items
O1            Beer
O1            Wine
O2            Beer
O2            Wine
O3            Beer
O4            Chips
我需要将R中的这个转换为以下格式

O1 Beer,Wine
O3 Beer,Chips 
感谢您的帮助

我尝试了以下方法:

# MOCK DAtA
o1 <- c("beer","Wine")
o2 <- c("beer","Wine")
o3 <- c("beer","Chips")
o4 <-c("Curd","chips")
o5 <-c("beer")
o6<-c("Wine")
o7 <-c("fruits")
o8<- c("wine","Cheese")

order <- list(o1,o2,o3,o4,o5,o6,o7,o8)

library(Arules)

dt <- as (order,"transactions")

注意:我无法在SQL中更改此值,因为我有800K行。

您可以做一件事。您发布的第一个表内容包含订单ID和项目。您可以将它们插入到工作表中,在工作表中添加第三列,该列将存储记录的densite_RANK(),在group by partition by子句和order by Items中保留order id。加载此表后。你可以简单地利用这句话<代码>合并(最大值((1后项目结束时的大小写列数)),“)| |”,“| |合并(最大值((2后项目结束时的大小写列数)),”)|等等。但这有一个缺点,您必须知道任何订单中出现的最大项目数

如果数据库中的XML函数运行良好,可以使用下面的子句(这将克服前面方法的缺点,但需要确保此命令运行良好)

XMLAGG((items)| |','ORDER BY rank_col)(VARCHAR(50))自定义连接的_项
。希望这有帮助

谢谢
阿里特拉

请表现出一些努力。到目前为止,您尝试了什么?
我无法在SQL中改变这一点,因为我有800K行
——您为什么认为R比SQL更适合解决这个问题?我对R不熟悉,仍在探索它,我能够将列表转换为事务,我的思维过程是检查是否可以将事务级数据转换为列表。当然,您应该在SQL中执行此操作,可能效率会更高。您的Teradata版本是什么?Teradata 13.10.07.12版
str(order)
List of 8
 $ : chr [1:2] "beer" "Wine"
 $ : chr [1:2] "beer" "Wine"
 $ : chr [1:2] "beer" "Chips"
 $ : chr [1:2] "Curd" "chips"
 $ : chr "beer"
 $ : chr "Wine"
 $ : chr "fruits"
 $ : chr [1:2] "wine" "Cheese"

str(dt)
 Formal class 'transactions' [package "arules"] with 4 slots
  ..@ transactionInfo:'data.frame': 0 obs. of  0 variables
  ..@ data           :Formal class 'ngCMatrix' [package "Matrix"] with 5