联接表中每个记录的基于日期的前1个记录

带宽

我有一个变量表“ @USERS”和一个基于生效日期的USERCLASS数据库表。我需要做的是在确定的日期填充USERCLASS。例子:

@USERS

USERID | OTHER
--------------
A1     |  1
B1     |  2
C1     |  3
D1     |  4

数据库表

USERID | CLASS | EFFECTIVEDATE
------------------------------
A1     |  ZZ   | 2015-02-01
A1     |  XX   | 2014-02-01
B1     |  TT   | 2015-02-01
B1     |  RR   | 2014-02-01
etc..

基于2015年1月1日的日期。将要使用的课程将是2014年两者的有效课程。

我所拥有的是:

SELECT
    USERID,
    OTHER,
    'CLASS' = (SELECT TOP 1
                   A.CLASS
               FROM
                   DBCLASSTABLE A
                   JOIN @USERS B on A.USERID = B.USERID
               WHERE A.USERID = B.USERID AND A.EFFECTIVEDATE < 2015-01-01
               ORDER BY A.EFFECTIVEDATE DESC
              )
FROM
    @USERID

但是,我显然做错了什么,因为它为所有记录返回了DBCLASSTABLE的TOP。

USERID | OTHER | CLASS
----------------------
A1     |  1    |  ZZ
B1     |  2    |  ZZ
C1     |  3    |  ZZ
D1     |  4    |  ZZ

使用此样本数据,它应该只返回

USERID | OTHER | CLASS
-----------------------
A1     | 1     | XX
B1     | 2     | RR

任何帮助,将不胜感激。

戈登·利诺夫(Gordon Linoff)

大概,您需要一个相关的子查询。您的问题提到一张桌子@USERS,但没有提到一张桌子@USERIDS我猜他们是一样的:

SELECT USERID, OTHER,
       (SELECT TOP 1 c.CLASS
        FROM DBCLASSTABLE c
        WHERE c.USERID = u.USERID AND c.EFFECTIVEDATE < '2015-01-01'
        ORDER BY A.EFFECTIVEDATE DESC
       ) as Class
FROM @USERS u;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何基于Postgres中的日期从表中检索记录

来自分类Dev

获取两个联接表中的相关记录数

来自分类Dev

如何从 1 个表中按日期获取记录并更新 Postgresql 中的其他表?

来自分类Dev

如何根据desc的devicetimestamp顺序从每个表中获取前1条记录

来自分类Dev

如何在SQL Server SELECT的第二个联接表中按ID选择每个记录的顶部?

来自分类Dev

如何在SQL Server中使用group by列基于where子句获取每个组的前1个记录

来自分类Dev

如何在mysql中基于2个日期选择记录

来自分类Dev

使用 3 个表和联接删除其他记录中包含字符串的记录

来自分类Dev

获取表中存在的每个日期的第一个和最后一个记录号

来自分类Dev

如何基于日期联接2个表

来自分类Dev

为组中的每个记录选择最后n个日期记录

来自分类Dev

为组中的每个记录选择最后n个日期记录

来自分类Dev

为表中的每个记录的字段加1

来自分类Dev

从外部联接表中获取记录数

来自分类Dev

Rails在联接表中创建多个记录

来自分类Dev

从外部联接表中获取记录数

来自分类Dev

使用联接从多个表中检索记录

来自分类Dev

计算2个日期之间发生的访问表中的记录

来自分类Dev

如何基于另一个表中的两个日期字段获取一个表中的记录数

来自分类Dev

SQL Server:基于记录相关值的表联接

来自分类Dev

对于表a中的每个记录,返回表b中具有最接近但现在大于现在的日期的记录NOW()

来自分类Dev

在Android中基于日期从sqlite删除记录

来自分类Dev

SQL为1:many关系的“父”表中的每个记录查找丢失的“子”记录

来自分类Dev

更新表SQL Server中的前1条记录

来自分类Dev

yii-为每个按日期排序的类型字段选择前五个记录

来自分类Dev

每个日期的记录列表

来自分类Dev

未来 4 周基于每个产品的记录日期的连续单位

来自分类Dev

T-SQL“联接”表到另一个表并收集前3个记录作为列

来自分类Dev

查询以基于一个字段从表中获取记录,并检查该字段是否不是-1

Related 相关文章

  1. 1

    如何基于Postgres中的日期从表中检索记录

  2. 2

    获取两个联接表中的相关记录数

  3. 3

    如何从 1 个表中按日期获取记录并更新 Postgresql 中的其他表?

  4. 4

    如何根据desc的devicetimestamp顺序从每个表中获取前1条记录

  5. 5

    如何在SQL Server SELECT的第二个联接表中按ID选择每个记录的顶部?

  6. 6

    如何在SQL Server中使用group by列基于where子句获取每个组的前1个记录

  7. 7

    如何在mysql中基于2个日期选择记录

  8. 8

    使用 3 个表和联接删除其他记录中包含字符串的记录

  9. 9

    获取表中存在的每个日期的第一个和最后一个记录号

  10. 10

    如何基于日期联接2个表

  11. 11

    为组中的每个记录选择最后n个日期记录

  12. 12

    为组中的每个记录选择最后n个日期记录

  13. 13

    为表中的每个记录的字段加1

  14. 14

    从外部联接表中获取记录数

  15. 15

    Rails在联接表中创建多个记录

  16. 16

    从外部联接表中获取记录数

  17. 17

    使用联接从多个表中检索记录

  18. 18

    计算2个日期之间发生的访问表中的记录

  19. 19

    如何基于另一个表中的两个日期字段获取一个表中的记录数

  20. 20

    SQL Server:基于记录相关值的表联接

  21. 21

    对于表a中的每个记录,返回表b中具有最接近但现在大于现在的日期的记录NOW()

  22. 22

    在Android中基于日期从sqlite删除记录

  23. 23

    SQL为1:many关系的“父”表中的每个记录查找丢失的“子”记录

  24. 24

    更新表SQL Server中的前1条记录

  25. 25

    yii-为每个按日期排序的类型字段选择前五个记录

  26. 26

    每个日期的记录列表

  27. 27

    未来 4 周基于每个产品的记录日期的连续单位

  28. 28

    T-SQL“联接”表到另一个表并收集前3个记录作为列

  29. 29

    查询以基于一个字段从表中获取记录,并检查该字段是否不是-1

热门标签

归档