通过表或另一个视图搜索的SQL查看

时间:2017-04-10 07:32:39

标签: sql sql-server sql-server-2008

美好的一天

请你帮助我,我有一个SQL视图,它有txDate,reference,Amount 像

  select TxDate, Reference, Amount
    FROM Transactions

然后我有一个名为Period的表,它有PeriodId,StartDate和EndDate

所以期间是按月计算的, LIKE

   PeriodID           StartDate               EndDate
     1                 2017/01/01              2017/01/31
     2                 2017/02/01              2017/02/29
     3                 2017/03/01              2017/03/31
     4                 2017/04/01              2017/04/30

依此类推到12月,这将是第12期,

所以我希望在我的SQL视图中使用txDate来查询Period表,例如

        if txDate is '2017/02/25'

Query必须返回TxDate在StartDate和EndDate之间的PeriodID,因此在本例中它应该是2.

所以我的结果应该是这样的

    txDate             Reference             Amount          PeriodID
    2017/02/25          INVOO1               2000               2
    2017/01/04          REC002                 30               1
    2017/03/05          SALE                 5000               3

如何在搜索该表时进行JOIN以将PEriodID引入我的SQL视图... ??

1 个答案:

答案 0 :(得分:0)

如果您确定Period表中的开始日期和结束日期永远不会重叠,并且Period表中始终有一条与您的TxDate匹配的记录,则非常简单:

SELECT tran.TxDate,
       tran.Reference,
       tran.Amount,
       peri.idPeriod
FROM   Transactions tran
JOIN   Period       peri
  ON   tran.TxDate BETWEEN peri.PeriodStartDate and peri.PeriodEndDate,