Sql 如何根据父列值为所有子记录(包括父记录)填充事实列(屏幕截图)
如何为所有行(父行+子行)生成事实列?对于所有其他7行,父级的Sql 如何根据父列值为所有子记录(包括父记录)填充事实列(屏幕截图),sql,sql-server,azure-synapse,Sql,Sql Server,Azure Synapse,如何为所有行(父行+子行)生成事实列?对于所有其他7行,父级的RefTotalTransAmountPackage列应与DistributedPercentage列相乘 假设我理解您的请求,您可以尝试以下方法: DECLARE @tempFactItemTagsAssignment table ( ID int, ParentOrderItemID int, RefTotalTransAmountPackage decimal(18,4), DistributedPercentage d
RefTotalTransAmountPackage
列应与DistributedPercentage
列相乘
假设我理解您的请求,您可以尝试以下方法:
DECLARE @tempFactItemTagsAssignment table (
ID int, ParentOrderItemID int, RefTotalTransAmountPackage decimal(18,4), DistributedPercentage decimal(18,2)
);
INSERT INTO @tempFactItemTagsAssignment VALUES
( 382904448, 382904445, 0, 0 ),
( 382904446, 382904445, 0, 27.49 ),
( 382904446, 382904445, 0, 27.49 ),
( 382904446, 382904445, 0, 0.83 ),
( 382904446, 382904445, 0, 27.49 ),
( 382904445, NULL, 77.99, 16.70 ),
( 382904447, 382904445, 0, 0 );
DECLARE @ParentId int = 382904445;
SELECT
x.ID,
x.ParentOrderItemID,
x.RefTotalTransAmountPackage,
x.DistributedPercentage,
p.ParentRefTotal,
CAST ( ( p.ParentRefTotal * ( x.DistributedPercentage / 100 ) ) AS decimal(18,2) ) AS Fact
FROM @tempFactItemTagsAssignment AS x
OUTER APPLY (
SELECT RefTotalTransAmountPackage AS ParentRefTotal FROM @tempFactItemTagsAssignment AS n
WHERE n.ID = @ParentId AND n.ParentOrderItemID IS NULL
) AS p
WHERE
x.ID = @ParentId OR x.ParentOrderItemID = @ParentId
ORDER BY
ID;
返回
+-----------+-------------------+----------------------------+-----------------------+----------------+-------+
| ID | ParentOrderItemID | RefTotalTransAmountPackage | DistributedPercentage | ParentRefTotal | Fact |
+-----------+-------------------+----------------------------+-----------------------+----------------+-------+
| 382904445 | NULL | 77.9900 | 16.70 | 77.9900 | 13.02 |
| 382904446 | 382904445 | 0.0000 | 27.49 | 77.9900 | 21.44 |
| 382904446 | 382904445 | 0.0000 | 27.49 | 77.9900 | 21.44 |
| 382904446 | 382904445 | 0.0000 | 0.83 | 77.9900 | 0.65 |
| 382904446 | 382904445 | 0.0000 | 27.49 | 77.9900 | 21.44 |
| 382904447 | 382904445 | 0.0000 | 0.00 | 77.9900 | 0.00 |
| 382904448 | 382904445 | 0.0000 | 0.00 | 77.9900 | 0.00 |
+-----------+-------------------+----------------------------+-----------------------+----------------+-------+
提供数据集的预期结果,以及行,如果您可以在文本中发布,将有助于Yayy,它可以工作!!非常感谢,唯一的区别不是静态参数,而是我使用了一个到另一个表的左连接,因为我们将有多个这样的父子记录。非常感谢@Critical Error