我正在处理按项目编号和计数分组的数据。每条记录都有一个count > 2
需要分解成单独的记录,并在该级别与另一组不同的数据进行比较。
数据看起来像这样(它被困在这种格式中。这是客户发送它的唯一方式。):
OwnerNumber ItemCode ItemNumber CountOfItems
1234 Item1 Item1-001 3
1234 Item1 Item1-002 1
1234 Item1 Item1-003 2
1234 Item2 Item2-001 1
我需要这样格式化的数据(动态地不对 CountOfItems 的值进行硬编码):
OwnerNumber ItemCode ItemNumber
1234 Item1 Item1-001
1234 Item1 Item1-001
1234 Item1 Item1-001
1234 Item1 Item1-002
1234 Item1 Item1-003
1234 Item1 Item1-003
1234 Item2 Item2-001
出于某种原因,我无法以一种干净的方式(或任何方式)来做到这一点。
您可以使用通用表表达式进行管理
WITH CTE AS (
SELECT OwnerNumber,ItemCode,ItemNumber,CountOfItems FROM table
UNION ALL SELECT OwnerNumber,ItemCode,ItemNumber,CountOfItems-1
FROM CTE
WHERE CountOfItems >= 2
)
SELECT OwnerNumber,ItemCode,ItemNumber
FROM CTE
ORDER BY ItemNumber
OPTION (MAXRECURSION 0);
Edit:
Added MAXRECURSION
处理 CountOfItems 超过 Dev_etter 指出的默认最大递归的情况
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)