我是新来的,对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 。
答案 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;