【问题标题】:joining multiple tables with filter by date按日期过滤加入多个表
【发布时间】:2016-01-03 00:20:40
【问题描述】:

我有 3 个表..我如何加入这些表并在每个表上按日期过滤

主表

 id    accnt   amount    date
---------------------------------
  1      xxx     10.00   1/1/2016
  2      yyy     20.00   1/1/2016
  3      zzz     30.00   1/1/2016

SupplyTbl - 此表会将供应值添加到 MainTbl 中的金额

  id   accnt    supply   date
-------------------------------
   1     xxx     5.00     1/10/2016
   1     xxx     5.00     2/14/2016
   2     yyy    10.00     1/20/2016

已发行表

  id   accnt    issued   dateIssue
------------------------------------------
   1     xxx    5.00      1/10/2016
   1     xxx    5.00      2/14/2016
   2     yyy   10.00      2/15/2016  

现在我想加入这些表..带有日期范围..如果我将日期过滤为JANUARY,它会产生类似这样的结果

  id   accnt  amount   issued
 -----------------------------
  1     xxx    15.00    5.00
  2     yyy    30.00    0.00
  3     zzz    30.00    0.00

当我过滤到FEBRUARY..它将从JANUARY合并到FEBRUARY

 id   accnt  amount   issued
 -----------------------------
  1     xxx    20.00   10.00
  2     yyy    40.00   10.00
  3     zzz    30.00    0.00

我从那天晚上开始就一直在努力解决这个问题。很高兴提前得到任何帮助..tnx :)

【问题讨论】:

  • 您想要加入的性质尚不清楚。 SupplyTbl和这有关系吗?
  • 您想要的过滤条件的性质也不清楚。您打算将哪些日期与过滤器进行比较?另外,您是否打算过滤掉前几年的日期(如果有的话)?
  • supplyTbl 中的supply 值将添加到MainTbl..根据他们的ID..sir 中的数量

标签: sql sql-server view


【解决方案1】:

试试这样的

SELECT M.id, 
       M.accnt, 
       amount = M.amount + Isnull(s.supply, 0), 
       issued = Isnull(I.issued, 0) 
FROM   maintbl M 
       LEFT OUTER JOIN (SELECT id, 
                               Sum(supply) AS supply 
                        FROM   supplytbl 
                        WHERE  Month(dates) = 1  -- Month filter for Jan - feb Month(dates) in (1,2)
                        GROUP  BY id) S 
                    ON s.id = M.id 
       LEFT OUTER JOIN (SELECT id, 
                               Sum(issued) AS issued 
                        FROM   issuedtbl 
                        WHERE  Month(dateissue) = 1 -- Month filter
                        GROUP  BY id) I 
                    ON I.id = M.id 

【讨论】:

  • 我会试试这个 mate..tnx
  • hmmm..我们如何在视图中的查询中做到这一点?在使用变量过滤日期?喜欢WHERE Month(dateissue) = textbox.text
猜你喜欢
  • 1970-01-01
  • 2020-04-16
  • 1970-01-01
  • 1970-01-01
  • 2021-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多