首先,我要感谢肯特·米利根(Kent
Milligan)及其他的文章,网址为http://www.mcpressonline.com/sql/techtip-combining-multiple-
row-values-into-a-single-row-with-sql-in-db2-
for-i.html
使我尽可能地解决了这个问题。但是现在我需要扩大他在这里所做的事情。
为避免您不得不阅读他的文章,他解决的问题是将字符串数据从多行连接到结果表中的单行中。例如:
台式车:
结果:
这是通过SQL语句完成的:
WITH numbered_sets(make, model, curr, prev) AS (
SELECT make, model,
ROW_NUMBER() OVER (PARTITION BY make ORDER BY model) AS curr,
ROW_NUMBER() OVER (PARTITION BY make ORDER BY model) -1 AS prev
FROM inventory)
SELECT make,
MAX (TRIM(L ',' FROM
CAST(SYS_CONNECT_BY_PATH(model, ',') AS VARCHAR(256)) ))
FROM numbered_sets
START WITH curr = 1
CONNECT BY make = PRIOR make AND prev = PRIOR curr
GROUP BY make
我能够将其调整到自己的桌子上,并获得大部分想要的方式。但出于我的目的,我需要在分组中添加其他列。例如:
台式车:
对于结果,我正在寻找:
是否有人对我需要添加到原始语句中的内容有任何想法,以便能够添加TYPE列,并相应地添加GROUP?我尝试了一些事情,但是我怀疑我需要使用CONNECT_BY_PATH语句来做一些事情,但我不确定。
谢谢
我认为您只需要在考虑查询的正确点上集成类型。
如果无法测试,我认为这很接近;但我可能错过了一些东西
WITH numbered_sets(make, type, model, curr, prev) AS (
SELECT make, type, model,
ROW_NUMBER() OVER (PARTITION BY make, Type ORDER BY Make, Type, model) AS curr,
ROW_NUMBER() OVER (PARTITION BY make, type ORDER BY Make, type, model) -1 AS prev
FROM inventory)
SELECT make, Type
MAX (TRIM(L ',' FROM
CAST(SYS_CONNECT_BY_PATH(model, ',') AS VARCHAR(256)) ))
FROM numbered_sets
START WITH curr = 1
CONNECT BY make = PRIOR make AND prev = PRIOR curr and type = prior type
GROUP BY make, type
也许我们需要先更改连接方式,然后再进行连接…尽管我还不明白为什么这会有所帮助…
CONNECT BY concat(make,type) = PRIOR concat(make,type) AND prev = PRIOR curr
问题内容: 可以构造SQL来连接多行中的列值吗? 以下是一个示例: 表A 表B SQL的输出应为- 因此,基本上,输出表的Desc列是表B的SEQ值的串联? 对SQL有帮助吗? 问题答案: 有几种方法取决于您使用的版本-请参见有关字符串聚合技术的oracle文档。一种很常见的用法是: 然后加入以挑选您想要的。 注意: 开箱即用,仅适用于列。
问题内容: 我有桌子: 我想要这样的输出: 问题答案: 如果可以创建一个数字表,其中包含从1到要拆分的最大字段的数字,则可以使用以下解决方案: 请看这里的小提琴。 如果无法创建表,则解决方案可以是: 这里有个小提琴例子。
我有表: 我想要这样的输出:
问题内容: 我正在尝试将一些数据汇总为一个报告,并且需要连接表之一的行值。这是基本的表结构: 评论 审稿人 用户数 这是M:M关系。每个审阅可以有许多审阅者;每个用户可以与许多评论相关联。 基本上,我要查看的是Reviews.ReviewID,Reviews.ReviewDate和该评论的所有关联用户的FName的串联字符串(以逗号分隔)。 代替: 显示此: 我发现这个文章描述了一些方法可以做到这
问题内容: 假设我在MySQL数据库中有两个表。 表格1: 表2: 从数据库中选择行时,是否有任何方法可以将第二个表中的行作为列连接到第一个表中?目前我正在使用。 输出: 目前,我正在PHP脚本中对此进行排序,以将其排序为一个数组。这很痛苦,因为我必须查看ID,看看它们是否相同,然后进行相应的排序。我觉得有一种方法可以在MySQL中正确执行此操作,而不必在PHP中将其分类为数组。每个ID在第二个表
我的hql查询似乎有什么问题? 错误: 组织。冬眠hql。内部的ast。QuerySyntaxException:意外标记:第1行第263列附近的标记 我假设它是在谈论