我需要提取特定事件发生的最新日期。在DB中,我有一个由每个用户多次完成的测试。我想只有当用户的最后一次测试结果低于200时。
create table #temp_VL (cln_urn varchar(50), tst_date datetime, tst_df_test_name varchar (50), VL DECIMAL (10,2), cln_pk varchar(100))
我正在将数据导入的表格。我遇到的问题是有些人在某些时候测试了200以下,但是后来又回到了200以上。我可以把所有测试过的人都拉到200以下,但出于某种原因,不是在最后一次测试时。
答案 0 :(得分:0)
如果我已正确理解您的要求,那就是:
向我提供用户得分低于200的每个用户的最新记录
以下代码显示了实现此目的的一个示例:
DECLARE @tabTestResults TABLE
(
UserId INT,
TestDate DATE,
Result INT
)
INSERT
INTO @tabTestResults
(
UserId,
TestDate,
Result
)
VALUES ( 1, '2015-01-01', 180 ),
( 1, '2015-07-23', 200 ),
( 1, '2015-08-23', 190 ),
( 1, '2015-09-23', 210 ),
( 2, '2015-01-01', 210 ),
( 2, '2015-10-23', 190 ),
( 3, '2015-10-23', 170 ),
( 4, '2015-10-23', 220 )
SELECT UserId, TestDate, Result
FROM
(
SELECT ROW_NUMBER() OVER (PARTITION BY UserId ORDER BY TestDate DESC) AS RowNumber, *
FROM @tabTestResults
WHERE Result < 200
) SQ
WHERE RowNumber = 1
返回:
UserId TestDate Result
1 2015-08-23 190
2 2015-10-23 190
3 2015-10-23 170
答案 1 :(得分:0)
假设您希望仅用户在您表达的最后一个日期评分为200以下。
我希望只有当用户的最后一次测试结果低于200时。
您可以使用以下查询。
$scope.state = UserService.getUserState();
使用我举例说明的数据你会得到这个:
state._currentUser