使用日期范围访问2010 SQL查询

时间:2014-12-05 01:52:10

标签: sql ms-access

我是新来的,对SQL和Access来说很新。我所拥有的是一个名为'Apartments'的表,其中包含大量信息行。它有Building,Letter,SSN,LeaseDate,MonthlyRent,MoveinCondition和MoveoutCondition。对于我的班级,我必须弄清楚特定公寓租用了多少次,因为表格中的所有信息都按照建筑物,信件和号码租赁显示。

到目前为止我所拥有的是:

SELECT Building, Letter, COUNT(*)  
FROM Apartments  
GROUP BY Building, Letter;

这几乎可以正确显示!但是有一个问题。租约在同一天可以有多个租户,但它只算作一个有效租约。

所以我要检查的是:

SELECT Building, Letter, LeaseDate, COUNT(*)  
FROM Apartments  
GROUP BY Building, Letter, LeaseDate;

现在这实际上按建筑物,信件和租约日期分组,并计算当日的租约数量。

但是我如何显示它以便它不计算这些重复项,并添加某种where或having语句来指定它。

例如:如果公寓1A是在2014年1月1日租赁但是由4个租户租用,也是1/1/13租用3个租户,它应该只显示NumberLeased为2,而不是7 。

1 个答案:

答案 0 :(得分:1)

从查询开始,为每个公寓租约期限提供一行。根据您的示例,以下查询会将1/1/14 LeaseDate的4个1A公寓1A租户中的每一个的行压缩为一行:

SELECT DISTINCT Building, Letter, LeaseDate
FROM Apartments

然后将其用作子查询,并将租约计入其不同的行:

SELECT sub.Building, sub.Letter, Count(*) AS NumberLeased
FROM
    (
        SELECT DISTINCT Building, Letter, LeaseDate
        FROM Apartments
    ) AS sub
GROUP BY sub.Building, sub.Letter;