我想使用这个简单的表在SSRS中创建分层报告? 你能帮我吗?我按照这里的教程:https://www.mssqltips.com/sqlservertip/1939/working-with-a-parent-child-hierarchy-in-sql-server-reporting-services-ssrs/SSRS:递归父子
但我无法弄清楚EmployeeKey和ParentEmployeeKey如何适用于我的表。至于我的表关注Col2是员工和Col1是父母。但是在SSRS中,当我通过Col2分组并且递归父母是COL1时,我没有得到期望的结果。
这里是我的表:
╔══════════════╦══════════════╗
║ COL1 ║ COL2 ║
╠══════════════╬══════════════╣
║ TEST01 ║ TEST02 ║
║ TEST01 ║ TEST03 ║
║ TEST01 ║ TEST04 ║
║ TEST02 ║ LAB ║
║ TEST02 ║ STL40 ║
║ TEST03 ║ LABSTL ║
║ TEST03 ║ STLSCH40 ║
║ TEST04 ║ LABSTL ║
║ TEST04 ║ FLG41 ║
║ TEST04 ║ STLSCH40 ║
╚══════════════╩══════════════╝
╔═══════════════╦══╗
║ COL1 ║ ║
╠═══════════════╬══╣
║ TEST01 ║ ║
║ -TEST02 ║ ║
║ ----LAB ║ ║
║ ----STL40 ║ ║
║ -TEST03 ║ ║
║ ----LABSTL ║ ║
║ ----STLSCH40 ║ ║
║ -TEST04 ║ ║
║ ----LABSTL ║ ║
║ ----FLG41 ║ ║
║ ----STLSCH40 ║ ║
╚═══════════════╩══╝
我不知道得到上述的缩进风格的结果。我是否需要使用HierarchyID和IsDescendantOf或递归CTE。 这是我做的递归CTE和它的结果。
Declare @Col1 varchar(30)='TEST01';
Declare @BomLevel Integer=0;
WITH tBOM
AS
(
select a.Col1 , a.Col2, @BomLevel "BOMLevel" from Component A
WHERE Col1= @Col1
UNION ALL
Select c.Col1, c.Col2, BomLevel+1 From Component C
INNER JOIN tBOM on tBOM.Col2=c.Col1
)
select Col1,Col2 ,BOMLevel from tbom
Col1 Col2 BOMLevel
TEST01 TEST02 0
TEST01 TEST03 0
TEST01 TEST04 0
TEST02 STL40 1
TEST02 LAB 1
TEST03 STLSCH40 1
TEST03 LABSTL 1
TEST04 STLSCH40 1
TEST04 FLG41 1
TEST04 LABSTL 1
嗯。这个解决方案简单得多。我没有想到如何排序。只有我添加的东西(如果它对问题更重要)是'REPLICATE(' - ',SQUARE(BOMLevel))'会产生完整的所需输出。 – ZLK
我忘了说我想用SSRS来达到这个目的。但我会试试这个。谢谢 – BobNoobGuy
是的!我想清楚了。更正关键是让那个SORT_PATH /键类型来标识哪一行属于哪个父母! – BobNoobGuy