SQL Server动态数据透视表

时间:2014-06-08 03:19:20

标签: sql sql-server pivot

在SQL Server中,我有两个表TableATableB,基于这些,我需要生成一个非常复杂的报告,在做了一些研究后我得出结论我必须使用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 ......),它应该看起来像这样

Report format

0 个答案:

没有答案