2个月数据总和并显示最新月份数据,前50名


我的表包含partno,location,col1,col2,measur1,measure2,measure3。 基于Measure3必须显示前100条记录。

事情是表加载两个月的数据。 例如。 一月 + 二月数据加载。 根据零件号、位置,如有重复记录必须取最新记录。 在sql查询中工作。 在sql查询中对两个月的数据求和,即。 jan=dec+jan,feb=feb+jan,对它们进行排名并取得排名1。这样就得到最新的记录。 如何使用 dax 在 power bi 中实现它。 没有日期表或列。 有月。 例如:nov2023=23、dec2023=24、jan2024=25、feb2024=26、mar2024=27 等等。

有切片机的零件号、位置。 并且在表中必须显示这些记录的序列号 1 到 100。

我尝试过的:

创建了显示前 50 名的度量。可以,但需要获取最新记录。

解决方案1

您确实需要更改数据库才能以任何有意义的方式实现此目的:在字符串中存储基于日期的数据始终是一个糟糕的主意,并且字符串比较始终基于第一个不同的字符对 – 甚至不考虑后续的字符对。 所以顺序是:

apr2022
apr2023
aug2022
aug2023
dec2022
dec2023
feb2022
feb2023
jan2022
jul2022
jul2023
jun2022
jun2023
mar2022
mar2023
may2022
may2023
nov2022
nov2023
oct2022
oct2023
sep2022
sep2023

这几乎没什么用。

虽然可以做到这一点,但这需要付出很大的努力 – 和运气:例如,一个法语或德语的月份名称会弄乱您的代码。

CAST 函数可以让你做到这一点:

SQL
CAST('oct2023' AS DATE)

将为您提供 2023-10-01,但它会为您的查询(所有查询)增加大量处理和复杂性,并且仍然不会为您提供每个月内所需的排序,因为您的数据不包含它:所有日期均为该月的第一天。 随着行数的增加,它会影响性能。

至少,向您的数据库添加一个时间戳列(DATETIME 或 DATETIME2),并将其默认为插入时间(优先采用 UTC),并使用它来代替您当前拥有的基于字符串的垃圾。

コメント

タイトルとURLをコピーしました