【问题标题】:Get record with MAX date获取 MAX 日期的记录
【发布时间】:2015-12-25 11:10:54
【问题描述】:

我的数据库中有这样的数据。我的报告将有 2 个参数,Start DateEnd Date

例如,如果用户选择Start Date = 1/1/2015End Date = 12/31/2015,则报告应返回用户TierCode = Privilege

我已经使用存储过程实现了这一点。但是这里的性能是一个问题,因为我无法使用提取数据。

SELECT
    m.MemberID,
    ty.TierCode AS TierCodeTY,
    ly.TierCode AS TierCodeLY
FROM
    Tangs_dim_Member m LEFT JOIN
    (
        SELECT TierCode, MemberID, ROW_NUMBER() OVER(PARTITION BY MemberID ORDER BY SnapshotDate DESC) AS i
        FROM dw_Tangs_MonthlySnapshot
        WHERE SnapshotDate >= @StartDate AND SnapshotDate <= @EndDate
    ) ty
ON
    ty.MemberID = m.MemberID AND ty.i = 1 LEFT JOIN
    (
        SELECT TierCode, MemberID, ROW_NUMBER() OVER(PARTITION BY MemberID ORDER BY SnapshotDate DESC) AS i
        FROM dw_Tangs_MonthlySnapshot
        WHERE SnapshotDate >= DATEADD(year,-1,@StartDate) AND SnapshotDate <= DATEADD(year,-1,@EndDate)
    ) ly
ON
    ly.MemberID = m.MemberID AND ly.i = 1

如何在不使用存储过程的情况下实现上述报告。只要我可以使用视图/自定义查询/表格+提取数据,计算字段就可以了。因此,数据将在 Tableau 中过滤,而不是在数据库中。

【问题讨论】:

    标签: sql-server tableau-api


    【解决方案1】:

    我认为您可以通过添加 Ordered by [date] 来获取最后插入的记录 并通过在 sql 查询中添加 [Limit 1] 来获得第一个

    希望对你有所帮助

    【讨论】:

    • 我的报告将包含This YearLast Year。订单日期很好,只是不是Limit。因为我需要使用计算字段If [Date] &gt;= [Start Date] And [Date] &lt;= [End Date] Then [MemberID] Else NULL End 从 Tableau 中获取所有记录并确定 Last Year
    猜你喜欢
    • 1970-01-01
    • 2014-10-19
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多