如果您使用的是SQL Server,我建议您创建一个存储过程(参数为p
).像这样的东西
CREATE PROCEDURE [dbo].[ExtractTimes]
@p INT
AS
BEGIN
SET NOCOUNT ON
------------------------------------------------------
-- OUTPUT
------------------------------------------------------
IF @p=1
BEGIN
--------------------------------------------------------------------------------------------
-- SELECT only top values [@p=1]
--------------------------------------------------------------------------------------------
SELECT LastName, StartTime, EndTime
FROM (
SELECT LastName, StartTime, EndTime, ROW_NUMBER() OVER (PARTITION BY LastName ORDER BY StartTime DESC) AS Rn
FROM TableName
) X
WHERE X.Rn=1
END
ELSE IF @p=2
BEGIN
--------------------------------------------------------------------------------------------
-- SELECT all rows [@p=2]
--------------------------------------------------------------------------------------------
SELECT LastName, StartTime, EndTime
FROM TableName
END
END
和execute it passing a parameter p
由用户 Select ,它可以是1或2,这取决于您是想看到所有行,还是只想看到每个名称的最后一行.
每次用户更改参数时,Tableau都会再次执行SP.
请不要忘记声明SET NOCOUNT ON
,否则它将不适用于Tableau.