【问题标题】:Subqueries in DAXDAX 中的子查询
【发布时间】:2018-02-20 15:17:41
【问题描述】:

如何在 DAX 中编写此查询?

SELECT TimeID, Code,(SELECT SUM(qty) FROM cteRanked c2 WHERE c2.rownum <= c1.rownum and c2.Code=c1.Code)
  FROM cteRanked c1;

谢谢

【问题讨论】:

  • 看起来像一个累计总数:daxpatterns.com/cumulative-total
  • 大卫的建议是正确的。您的 tsql 也可以使用 windows 函数进行优化: SUM(qty) OVER(PARTITION BY Code ORDER BY rownum ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)

标签: sql-server ssas dax tabular ssas-tabular


【解决方案1】:

考虑到 SQL 查询中没有指定分组,这可能会起作用

EVALUATE
SELECTCOLUMNS(
    ADDCOLUMNS(
        cteRanked,
        "QtyRT",
            VAR LastRowNum = cteRanked[rownum]
            RETURN
                CALCULATE(
                    SUMX( cteRanked, cteRanked[qty] ),
                    REMOVEFILTERS( cteRanked ),
                    VALUES( cteRanked[Code] ),
                    cteRanked[rownum] <= LastRowNum
                )
    ),
    "TimeID", cteRanked[TimeID],
    "Code", cteRanked[Code],
    "QtyRT", [QtyRT]
)

首先,我们遍历整个 cteRanked 表,添加列 QtyRT(数量运行总计),该列包含具有相同代码且 rownum

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    相关资源
    最近更新 更多