0

我是 SQL 的新手,马上开始,但慢慢地弄明白了。我搜索但找不到任何对我有意义的东西。就像我说的,我是新人,对不起。如果合适,请使用 SQL Server 2008 R2。

我有一张结构像这样的表

AccountNumber  StartDate                EndDate
  123456       2012-05-07 12:55:55.000  2012-05-09 09:53:55.000
  789012       2012-10-17 13:55:55.000  2012-11-02 10:53:55.000
  345678       2012-11-13 14:55:55.000  2012-12-14 11:53:55.000

我还有一个结构如下的工作日表

Date        IsWorkday  DayOfWeek
2012-01-01     N          1
2012-01-02     N          2
2012-01-03     Y          3
2012-01-04     Y          4
2012-01-05     Y          5
2012-01-06     Y          6

Etc. through 2020-12-31

我没有设置表格,也无法以任何方式更改它们。我试过了,我不会被允许的。我什至不能直接给数据库管理员发邮件。整洁的。

我需要选择某些我可以处理的列,但我需要在最后一列计算 StartDate 和 EndDate 值之间的天数,但前提是两者之间的天数在工作日表中IsWorkday 的 Y 值。我希望这是有道理的。如果在当前结构下根本无法做到或非常麻烦,那么知道这也很好(所以我可以推动更好的工作日/非工作日表或其他东西)。任何帮助将不胜感激,并且可能会换取我的长子。

4

1 回答 1

0

尝试这个

SELECT X.*, X2.DayCnt 
FROM AccountTable X
INNER JOIN 
(
    SELECT a.accountnumber,a.StartDate, b.EndDate, Count(b.Date) DayCnt 
    FROM AccountTable a
    LEFT OUTER JOIN workdays w 
        ON a.StartDate >= w.date and 
        a.EndDate <= w.date and 
        IsWorkday = 'Y'
    GROUP BY a.accountnumber,a.StartDate, b.EndDate
) X2 
ON X.accountnumber = X2.accountnumber and
X.StartDate = X2.StartDate and X.EndDate = X2.EndDate
于 2013-01-18T17:29:28.223 回答