我是 SQL 新手,想向您寻求帮助。
我有一个表,其中包含多个会计年度的约超过 1000 万条记录。对于每个会计年度,我都有一个会计期间和过账期间列。 我需要将以下 DAX 代码转换为 SQL 代码。我需要在现有表中添加一个新列来保存 MaxPeriodValue(是/否),该计算基于首先找到最大会计期间并将其与所有过帐期间进行比较的计算,如果 posts_key 等于最长期限。
最大周期值=
'TableName'[Posting_Key] = CALCULATE(MAX('TableName'[会计期间]),ALLEXCEPT('TableName','TableName'[FiscalYear]))
TableName 包含多个会计年度的数据。对于每个会计年度,有多个会计期间和多个过帐码。
我需要的是一个是/否的答案。
-第一步是计算所有会计年度的所有会计期间的最大值。
-第二步是比较 Posting_key 列中的每个值。如果 Posting_key 列中的任何值 = Max(会计期间),则 MaxPeriodValue = true,否则为 false。
例如,如果 Max(Fiscal period =14) 并且我在 posts_key 中的值为 14,则表中将具有以下值:
感谢您的帮助!
我尝试了 PowerQuery 中的现有解决方案,它对我不起作用。
在 SQL 中,只能使用同一行中的值来计算列。因此,不可能引用其他行的值或执行聚合功能,例如查找多行中的最大值。
如果您需要根据当前行之外的信息派生列,则可以使用视图或存储过程。
如果您需要包含计算列的数据的虚拟表示,视图将是一个不错的选择。您可以在需要数据时查询该视图,该视图将包含计算列,例如 MaxPeriodValue。
或者,如果您希望将计算列作为实际表的一部分,则可以使用存储过程来更新表。