2014-12-05 63 views
1

我是新來的,對於SQL和Access來說很新。我所擁有的是一張名爲'公寓'的表格,其中包含一串行信息。它有大廈,信件,SSN,LeaseDate,MonthlyRent,MoveinCondition和MoveoutCondition。對於我的班級,我必須弄清表格中的所有信息,並根據建築物,信件和號碼顯示出租某間特定公寓的次數。使用日期範圍訪問2010 SQL查詢

我到目前爲止是這樣的:

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

這幾乎是正確地顯示它!但有一個問題。同一天可以有多個租戶租用,但只能算作一個主動租約。

所以我做了什麼檢查是這樣的:

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

現在,這其實不通過建設,信和集團租賃日期和統計上的日期的租約數量。

但是,如何顯示它,以便它不計算這些重複項,並添加某種位置或有聲明來指定此項。

例如:如果公寓1A已於14年1月1日,而是由4個租戶,並且還通過13年1月1日3個租戶租用,應該只顯示NumberLeased爲2時,不7.

回答

1

以查詢爲單位,爲每個公寓租賃期限提供一行。根據您的例子,下面的查詢會凝結爲每個4公寓1A tennants爲14年1月1日LeaseDate的行成單行:

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; 
+0

謝謝,可惜它說,在計數syntas錯誤(子。*) – 2014-12-05 02:32:58

+0

真棒三江源!所以子查詢的工作方式是在本質上在查詢中創建查詢併爲其分配一個名稱,然後在beginnign select語句和group中的參數前使用該名稱 - sub - ? – 2014-12-05 02:43:21

+0

'AS sub'是我如何爲該子查詢分配一個別名。然後通過使用該別名限定字段名稱來引用這些字段。將數據源別名化對於子查詢尤其有用。但是別名基本上可以在任何時候使用,即使有一個非常簡單的單一表「SELECT」,例如'SELECT y。* FROM YourTable AS y;' – HansUp 2014-12-05 02:55:24