SQL结果中的分层编号

丁香树

我有一个查询,它对一些一般的分层数据进行一些完全联接。类别具有组,而组具有项目,尽管“组”和“项目”可能分别未附加到“类别”和“组”。我想要的结果如下所示:

I. NULL
  A. NULL
    1. Item Orphan <-- no category or group
  B. Group Red <-- no category
    1. Item Apple
    2. Item Banana
II. Category Bacon
  A. Group Blue
  B. Group Taupe
    1. Item Kiwi
    2. Item Watermelon
III. Category Atari
  A. Group Silver
IV. Category Maui
...

注意:我在编号之后添加了句点,以使示例更具可读性,但是输出中不需要它们。

现在,结果看起来像这样:

Category Group  Item
NULL     NULL   Orphan
NULL     Red    Apple
NULL     Red    Banana
Bacon    Blue   NULL
Bacon    Taupe  Kiwi
Bacon    Taupe  Watermelon
Atari    Silver NULL
Maui     NULL   NULL

我需要的是:

Co  Category Go Group  Io Item
I   NULL     A  NULL   1  Orphan
I   NULL     B  Red    1  Apple
I   NULL     B  Red    2  Banana
II  Bacon    A  Blue   1  NULL
II  Bacon    B  Taupe  1  Kiwi
II  Bacon    B  Taupe  2  Watermelon
III Atari    A  Silver 1  NULL
IV  Maui     A  NULL   1  NULL

虽然,在A最后一排和对1在SIo列的行与NULL物品也可能是NULL秒。不过,“孤儿项目”行上的IA都很重要。

编辑:这是从实际代码简化的可读性。在我的情况下,项目可能有0个或多个子项,所以有可能是其中的价值观每个项目多行CoGoIo只会被复制。不过,子项目没有编号,因此没有序数列。因此,一些完整行的示例如下所示:

Co  Category Go Group  Io Item       Supplier  Supplier_phone
I   NULL     B  Red    2  Banana     NULL      NULL
II  Bacon    B  Taupe  1  Kiwi       Steve     555-1234
II  Bacon    B  Taupe  1  Kiwi       Sally     555-4242
II  Bacon    B  Taupe  2  Watermelon NULL      NULL

我的问题是双重的:

  • 我如何为层次结构的每个级别进行不同的编号,并在该级别更改时增加它的编号?
  • 如何将这些数字转换为不同的序数空间(例如将1,2,3转换为a,b,c或I,II,III)并按级别进行?

这是在MS SQL Server 2012中。我只能访问SQL,因此T-SQL代码不可用。

作为参考,我的查询中FROMandWHERE子句一起是大约20行代码,我想保留DRY。我以前使用过CTE,但不确定在这种情况下是否有用。

我对使用熟悉row_number over (order by...,但是在这种情况下我看不到如何使用它。

亚伦·迪茨(Aaron Dietz)

对于组号,我相信你想要DENSE_RANKROW_NUMBER除组外,它的使用方法与相同

没有看到您的真实代码,它将是这样的:

SELECT    DENSE_RANK() over (ORDER BY Category) as Co,
          Category,
          DENSE_RANK() over (PARTITION BY Category, ORDER BY [Group]) as Go,
          Group,
          --etc

就是说,我不知道如何将数字转换为不带函数的数字/字母。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL结果中的分层编号

来自分类Dev

Excel中的分层自动编号

来自分类Dev

分层检查父编号

来自分类Dev

在Ruby on Rails中编号视图的结果

来自分类Dev

打印分层树的编号轮廓

来自分类Dev

Oracle SQL,在分层查询上获得重复结果

来自分类Dev

glmer VS JAGS:仅截取的分层模型中的结果不同

来自分类Dev

glmer VS JAGS:仅截取的分层模型中的结果不同

来自分类Dev

如何使用查询SQL计算结果编号

来自分类Dev

MySQL Workbench中结果网格中的行编号

来自分类Dev

Ckeditor项目符号和编号列表未显示在结果中

来自分类Dev

如何使用JavaScript中的DOM自动递增编号结果?

来自分类Dev

在txt.file中搜索编号并获取所有结果

来自分类Dev

错误编号 SQL中获取的行数

来自分类Dev

如何对sql中的重复行进行编号

来自分类Dev

订购编号SQL Server中的XML路径

来自分类Dev

从字段编号中删除字符的 SQL 代码

来自分类Dev

分层SQL / PL查询中父级的最新值

来自分类Dev

如何在SQL Server 2014中呈现分层数据

来自分类Dev

在SQL Server中对分层表进行排序?

来自分类Dev

需要SQL Server中3个表的分层数据

来自分类Dev

SQL中的无序结果

来自分类Dev

分层SQL选择查询

来自分类Dev

Oracle sql - 分层查询

来自分类Dev

返回结果但特定代理未在结果中返回我需要引用代理编号的空值

来自分类Dev

ggplot中的分层轴?

来自分类Dev

Android中的分层窗口

来自分类Dev

Java中的分层枚举

来自分类Dev

python中的分层求和