在SQL Server中,我有两个表TableA
和TableB
,基于这些,我需要生成一个非常复杂的报告,在做了一些研究后我得出结论我必须使用SQL Pivot表。此外,我尝试了这个示例link,但在我的情况下,TableB表可以有任意数量的子行,这使得它非常复杂,所以任何人都可以帮助我。请参阅以下详细信息:
代码
Create table TableA(
ProjectID INT NOT NULL,
ControlID INT NOT NULL,
ControlCode Varchar(2) NOT NULL,
ControlPoint Decimal NULL,
ControlScore Decimal NULL,
ControlValue Varchar(50)
)
样本数据
ProjectID | ControlID | ControlCode | ControlPoint | ControlScore | ControlValue
P001 1 A 30.44 65 Invalid
P001 2 C 45.30 85 Valid
代码
Create table TableB(
ControlID INT NOT NULL,
ControlChildID INT NOT NULL,
ControlChildValue Varchar(200) NULL
)
样本数据
ControlID | ControlChildID | ControlChildValue
1 100 Yes
1 101 No
1 102 NA
1 103 Others
2 104 Yes
2 105 SomeValue
对于给定的ProjectID,输出应该在一行中,其所有的Control值都是&其次是子控件值(基于ControlCode(即)ControlCode_Child(1,2,3 ......),它应该看起来像这样