Sql 仅为派生列中的不同值显示其他列值
这些是我的桌子结构- 规则 规则集\规则\映射 我试图做的是基于rule.id和ruleset\u rule\u map.rule\u id连接两个表 要获取这样的数据吗- 如果您可以看到,我想从派生列-规则_bucket中删除重复项。 同时,我只想为派生列rule\u bucket中的distincts显示rule\u顺序 已经为相同的问题编写了一个查询-Sql 仅为派生列中的不同值显示其他列值,sql,sql-server,group-by,Sql,Sql Server,Group By,这些是我的桌子结构- 规则 规则集\规则\映射 我试图做的是基于rule.id和ruleset\u rule\u map.rule\u id连接两个表 要获取这样的数据吗- 如果您可以看到,我想从派生列-规则_bucket中删除重复项。 同时,我只想为派生列rule\u bucket中的distincts显示rule\u顺序 已经为相同的问题编写了一个查询- select DISTINCT rrm.RULE_ORDER, CONCAT(r.PARENT_RULE, IIF(r.CHIL
select DISTINCT rrm.RULE_ORDER, CONCAT(r.PARENT_RULE,
IIF(r.CHILD_RULE IS NOT NULL, CONCAT('|', r.CHILD_RULE), r.CHILD_RULE),
IIF(r.SUB_CHILD_RULE IS NOT NULL, CONCAT('|', r.SUB_CHILD_RULE), r.SUB_CHILD_RULE),
IIF(r.SUB_SUB_CHILD_RULE IS NOT NULL, CONCAT('|', r.SUB_SUB_CHILD_RULE), r.SUB_SUB_CHILD_RULE) )
AS RULE_BUCKET from [RULE] r
inner join RULESET_RULE_MAP rrm on rrm.RULE_ID = r.ID
and rrm.RULESET_ID = 'AAE97A62-F37E-4454-A008-FF40A102BB25'
and r.PARENT_RULE <> 'N/A' order by rrm.RULE_ORDER;
但是通过上面的查询,我只能得到这样的结果
有人能帮我写下正确的查询吗?也欢迎使用样本帮助我解决上述问题。您可以使用以下分析功能:
select * from
(select t.*, row_number() over (partition by RULE_BUCKET order by RULE_ORDER desc) as rn
from
(select rrm.RULE_ORDER,
CONCAT(r.PARENT_RULE,
IIF(r.CHILD_RULE IS NOT NULL,
CONCAT('|', r.CHILD_RULE), r.CHILD_RULE),
IIF(r.SUB_CHILD_RULE IS NOT NULL,
CONCAT('|', r.SUB_CHILD_RULE), r.SUB_CHILD_RULE),
IIF(r.SUB_SUB_CHILD_RULE IS NOT NULL,
CONCAT('|', r.SUB_SUB_CHILD_RULE), r.SUB_SUB_CHILD_RULE) )
AS RULE_BUCKET
from [RULE] r
inner join RULESET_RULE_MAP rrm on rrm.RULE_ID = r.ID
and rrm.RULESET_ID = 'AAE97A62-F37E-4454-A008-FF40A102BB25'
and r.PARENT_RULE <> 'N/A') t) t
where rn = 1
order by RULE_ORDER;
如果确实每个规则存储桶一行,只需使用聚合:
SELECT MIN(RULE_ORDER), RULE_BUCKET
FROM (SELECT rrm.RULE_ORDER,
CONCAT(r.PARENT_RULE,
IIF(r.CHILD_RULE IS NOT NULL, CONCAT('|', r.CHILD_RULE), r.CHILD_RULE),
IIF(r.SUB_CHILD_RULE IS NOT NULL, CONCAT('|', r.SUB_CHILD_RULE), r.SUB_CHILD_RULE),
IIF(r.SUB_SUB_CHILD_RULE IS NOT NULL, CONCAT('|', r.SUB_SUB_CHILD_RULE), r.SUB_SUB_CHILD_RULE)
) AS RULE_BUCKET
FROM [RULE] r JOIN
RULESET_RULE_MAP rrm
ON rrm.RULE_ID = r.ID AND
rrm.RULESET_ID = 'AAE97A62-F37E-4454-A008-FF40A102BB25' AND
r.PARENT_RULE <> 'N/A'
) r
GROUP BY RULE_BUCKET
ORDER BY MIN(rrm.RULE_ORDER);
数据的图像真的帮不了我们,特别是当你也不解释逻辑的时候。花点时间以可消费的格式发布数据,并包含其背后的逻辑。向我们显示列名称的图片也无法帮助我们了解数据的外观。您希望数据采用何种可消费格式?请让我知道。我已经问了上面的问题->如果你能看到我想从派生列-rule_bucket中删除重复项。同时,我只想为派生列rule_bucket中的distincts显示rule_order。我们可以复制和粘贴的东西,我们可以使用的东西。我们不能从图像中复制数据,这对那些使用屏幕阅读器的人也没有帮助。DDL和DML语句最好,否则可以使用格式良好的表格文本。@Larnu-谢谢!将使用规则表和规则集\规则\映射表的数据更新问题。@codingNubie。您的示例数据仍然有重复的规则,例如第13行和第15行,因此您的问题仍然不清楚。