2011-06-07 50 views
1

這裏的問題:返回訪問記錄與零,而不是空

我有一個Access查詢爲食的報告,有時不能對某些標準返回任何記錄。我想在報告中顯示零而不是空行(當前正在返回空記錄集)。 如果沒有來自初始查詢的匹配記錄,是否有SQL解決方案(可能使用某種聯合語句和/或嵌套SQL)總是返回一個記錄(帶零)?

回答

0

一個可能的解決方案是創建具有相同主鍵的第二個表,並添加一條記錄。在你的查詢中,選擇第二個表中的所有記錄作爲連接類型,包括第一個表中沒有匹配記錄的那些記錄。選擇第一個表中的所有字段作爲輸出。

0

您可以爲所有列實現零行爲的一行表。在Access(ACE,Jet等)中實現這個輕微的痛苦是因爲它不支持行構造函數,並且FROM必須解析爲基表。換句話說,你需要一個保證至少包含一行的表格。

這對我來說不是問題,因爲我的數據庫中始終包含輔助表,例如一個calendar table,整數,等等。〔實施例的序列表,兌現一張桌子一排,全零表使用我行3000萬年曆錶:

SELECT DISTINCT 0 AS c 
    FROM Calendar; 

我可以再UNION我與物化表查詢但包括antijoin,以確保全零行只出現在結果的時候我的查詢是空集:

SELECT c 
    FROM T  
UNION 
SELECT 0 
    FROM Calendar 
WHERE NOT EXISTS (
        SELECT c 
        FROM T 
       ); 

注意使用UNION讓我刪除DISTINCT關鍵字和AS條款(「列別名「)來自物化表。