水平复杂的动态列?

Complex dynamic column horizontally?

我有第一个table如下

第二个table如下

我正在尝试以如下方式在 SSRS 中显示

基本上使用第一个 table 固定行数,然后使用第二个 table 动态加载列并根据 ID 相应地调整数据。

我不知道如何构建 SQL 结果的设计,以便能够像展示的那样显示

网上是否有任何样本可以引导我在这件事上找到正确的方法?

试试这个:

DECLARE @First TABLE (ID INT, Description NVARCHAR(50), Amount INT);
DECLARE @Second TABLE (ID INT, Description NVARCHAR(50), Amount INT);

INSERT INTO @First VALUES
(1, N'Cash', 50),
(2, N'CC', 20);


INSERT INTO @Second VALUES
(1, N'C1', 10),
(2, N'C2', 20),
(1, N'C3', 40);

SELECT ID, FD AS Description, FA AS Amount, C1, C2, C3
FROM
    (
        SELECT S.ID, S.Description SD, F.Description FD, F.Amount FA, S.Amount SA
        FROM @First F FULL JOIN @Second S ON F.ID = S.ID
    ) P1
    PIVOT
    (
        MAX(SA) FOR SD IN ([C1], [C2], [C3])
    ) P2

结果:

+----+-------------+--------+------+------+------+
| ID | Description | Amount |  C1  |  C2  |  C3  |
+----+-------------+--------+------+------+------+
|  1 | Cash        |     50 | 10   | NULL | 40   |
|  2 | CC          |     20 | NULL | 20   | NULL |
+----+-------------+--------+------+------+------+

Demo

更新:动态枢轴

CREATE TABLE First (ID INT, Description NVARCHAR(50), Amount INT);
CREATE TABLE Second (ID INT, Description NVARCHAR(50), Amount INT);
DECLARE @Cols NVARCHAR(MAX), @Query NVARCHAR(MAX);

INSERT INTO First VALUES
(1, N'Cash', 50),
(2, N'CC', 20);


INSERT INTO Second VALUES
(1, N'C1', 10),
(2, N'C2', 20),
(1, N'C3', 40);

SET @Cols = STUFF((SELECT distinct ',' + QUOTENAME(S.Description) 
            FROM Second S
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'');
SET @Query = N'SELECT ID, FD AS Description, FA AS Amount, '+ @cols + '
FROM
    (
        SELECT S.ID, S.Description SD, F.Description FD, F.Amount FA, S.Amount SA
        FROM First F FULL JOIN Second S ON F.ID = S.ID
    ) P1
    PIVOT
    (
        MAX(SA) FOR SD IN ('+@Cols+')
    ) P2'
EXECUTE (@Query)

Dynamic