DAX中的子查询

时间:2018-02-20 15:17:42

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

如何在DAX中编写此查询?

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

谢谢

1 个答案:

答案 0 :(得分:0)

考虑到在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(数量总计),该列包含具有相同Code的所有行的总和,其中rownum <=保存的rownum。 然后,我们使用SELECTCOLUMNS仅选择所需的列。