当前位置: 首页 > 面试题库 >

SSIS:Oracle多行到一列输出而没有STRAGG

施轶
2023-03-14
问题内容

当ID相同时,试图生成用逗号分隔的语言列表。

表格1:

ID | LangID
1    1
1    2
1    3
2    3
2    4
3    1

表2:

ID | Language
1    English
2    Spanish
3    French
4    German

想要生成如下结果:

ID | Languages
1    English, Spanish, French
2    French, German
3    English

我尝试过的事情:

Stragg-SSIS给我“无效标识符”

SYS_Connect_By_Path-无法弄清楚如何将id转换为字符串语言。

有什么建议?


问题答案:

有多种方法可以执行字符串聚合以生成逗号分隔的列表-有关更多详细信息,请参见此链接。根据链接中的示例,尝试:

SELECT x.id,
       LTRIM(MAX(SYS_CONNECT_BY_PATH(x.language,','))
       KEEP (DENSE_RANK LAST ORDER BY curr),',') AS employees
  FROM (SELECT a.id,
               b.language,
               ROW_NUMBER() OVER (PARTITION BY a.id ORDER BY b.language) AS curr,
               ROW_NUMBER() OVER (PARTITION BY a.id ORDER BY b.language) -1 AS prev
          FROM TABLE_1 a
          JOIN TABLE_2 b ON b.id = a.langid) x
GROUP BY x.id
CONNECT BY prev = PRIOR curr AND x.id = PRIOR x.id
START WITH curr = 1;


 类似资料:
  • 问题内容: 如果运行命令,则会得到多行输出。您如何将所有行连接为一行,有效地将每行替换为(以空格结尾)? 对我不起作用。 问题答案: 使用翻译所有换行符为空格: 注意:读取文件,连接文件。不要啦! 编辑: 只能处理单字符翻译。您可以使用更改输出记录分隔符,例如: 这将改变: 至:

  • 我的问题是如何将一列拆分为多个列。我不知道为什么 不起作用。 例如,我想将“df_test”更改为“df_test2”。我看到了很多使用熊猫模块的例子。还有别的办法吗?提前感谢您。 df_test2

  • 问题内容: 我写了两个shell脚本和。在和我有一个无限的for循环,他们打印一些输出到终端。我想写另一个脚本,同时呼吁和,但我想用户立即恢复,而不是已经无限运行脚本的终端的控制,我想隐藏在终端输出。 问题答案: 使用,如果你的后台作业需要较长时间才能完成,或者你只是使用SecureCRT的或类似的东西登录服务器。 重定向 标准输出 和 标准错误 ,以忽略输出。

  • 问题内容: 当按预期执行时,goroutine不打印任何内容。 问题答案: 当函数结束时,程序也将结束。它不等待其他goroutine完成。 引用Go语言规范:程序执行: 程序执行首先初始化主程序包,然后调用函数。当该函数调用返回时,程序退出。它不等待其他(非)goroutine完成。 有关更多详细信息,请参见此答案。 您必须告诉您的函数等待以goroutine形式启动的函数完成。您可以将它们与通

  • 问题内容: 我不确定如何将数据透视到特定视图。以下是测试数据。 SQL 从输出中可以看到,未分组。 我将如何实现这一目标?或者我会完全朝错误的方向前进? 问题答案: 问题的一部分是您已跨多个要透视的列对数据进行了非规范化。理想情况下,您应该考虑修复表结构,以便于维护和查询。如果无法修复表结构,则应先取消对列的透视图,然后应用PIVOT获得最终结果。 UNPIVOT流程将采用多列并将其转换为多行。根

  • 问题内容: 我正在写一个FTP下载器。代码的一部分是这样的: 我正在调用函数进程来处理回调: 输出是这样的: 但我希望它打印此行,下次重新打印/刷新它,因此它只会显示一次,并且我会看到下载进度。 怎么做到呢? 问题答案: 这是Python 3.x的代码: 该关键字是什么做的工作在这里- 在默认情况下,在一个换行符(结束)字符,但可以使用不同的字符串替换。在这种情况下,用回车符结束该行,而是将光标返