我有一個SQL分貝MS訪問鏈接表查詢與LEFT JOIN和聚合函數不返回預期的結果
CreatedDate QuoteNumber NumberOfLicensedDrivers
2012-07-01 10:38:49.157 48641 0
2012-07-01 18:35:38.680 48650 2
2012-07-02 08:44:33.770 48670 1
2012-07-02 09:12:09.447 48700 0
我已經簡化查詢的運行時輸出以下結果的查詢這個帖子的緣故,但它基本上是:
SELECT DISTINCT
CreatedDate,
QuoteNumber,
count([DriversLicense]) as NumberOfLicensedDrivers
FROM table1 LEFT OUTER JOIN table2 on table2.QuoteID = table1.ID
WHERE CreatedDate > '7/1/2012'
GROUP BY QuoteNumber, CreatedDate
ORDER BY CreatedDate ASC
該查詢給了我預期的輸出。我希望所有的引號出現在我的輸出中。如果有0個驅動程序,我想要顯示0。問題是我需要在鏈接表的MS訪問中創建相同的結果。 MS訪問輸出沒有給我預期的結果。
這裏是我使用的MS Access查詢
SELECT DISTINCT
quote.CreatedDate,
quote.QuoteNumber,
count(quoteDrivers.DriversLicense) As NumberOfLicensedDrivers
FROM quote
LEFT JOIN quoteDrivers ON quote.ID = quoteDrivers.QuoteID
WHERE (quote.CreatedDate>#7/1/2012#)
GROUP BY quote.CreatedDate, quote.QuoteNumber
ORDER BY quote.CreatedDate;
輸出顯示沒有許可的驅動程序:
CreatedDate QuoteNumber NumberOfLicensedDrivers
7/1/2012 10:38:49 AM 48641 0
7/1/2012 6:35:39 PM 48650 0
7/2/2012 8:44:34 AM 48670 0
7/2/2012 9:12:09 AM 48700 0
然而,當我添加一個額外的WHERE子句對quoteDrivers表:
SELECT DISTINCT
quote.CreatedDate,
quote.QuoteNumber,
count(quoteDrivers.DriversLicense) As NumberOfLicensedDrivers
FROM quote
LEFT JOIN quoteDrivers ON quote.ID = quoteDrivers.QuoteID
WHERE (quote.CreatedDate>#7/1/2012#)
and quoteDrivers.DriverAddedDate >#1/1/2012# ''Added this
GROUP BY quote.CreatedDate, quote.QuoteNumber
ORDER BY quote.CreatedDate;
我得到預期的結果(減去0司機引號)
CreatedDate QuoteNumber NumberOfLicensedDrivers
7/1/2012 6:35:39 PM 48650 2
7/2/2012 8:44:34 AM 48670 1
任何人都可以解釋爲什麼我沒有得到司機的計數,而從在where子句中指定列quoteDrivers表?
在quotedDrivers鏈接表中,在Access Design視圖中,CreatedDate是否顯示爲DateTime字段? –
@rontornambe,yes both quoteDrivers.DriverAddedDate和quote.CreatedDate是設計視圖中的DateTime字段。然而,它們不是相同的日期,不能用作連接的一部分。 – james31rock
如果鏈接表位於SQL Server中,是否可以運行SQL Profiler來查看Jet正在做什麼? – Laurence