我的数据库中有这样的数据。我的报告将包含2个参数,Start Date
和End Date
。
例如,如果用户选择Start Date = 1/1/2015
和End Date = 12/31/2015
,则报告应返回用户TierCode = Privilege
。
我使用存储过程实现了这一点。但是这里的表现是一个问题,因为我无法使用Extract Data。
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过滤,而不是在数据库中过滤。
答案 0 :(得分:0)
我认为您可以通过添加[日期]订购来获取最后插入的记录 并通过在sql查询中添加[Limit 1]来获得第一个
希望能帮到你