這裏的問題:返回訪問記錄與零,而不是空
我有一個Access查詢爲食的報告,有時不能對某些標準返回任何記錄。我想在報告中顯示零而不是空行(當前正在返回空記錄集)。 如果沒有來自初始查詢的匹配記錄,是否有SQL解決方案(可能使用某種聯合語句和/或嵌套SQL)總是返回一個記錄(帶零)?
這裏的問題:返回訪問記錄與零,而不是空
我有一個Access查詢爲食的報告,有時不能對某些標準返回任何記錄。我想在報告中顯示零而不是空行(當前正在返回空記錄集)。 如果沒有來自初始查詢的匹配記錄,是否有SQL解決方案(可能使用某種聯合語句和/或嵌套SQL)總是返回一個記錄(帶零)?
一個可能的解決方案是創建具有相同主鍵的第二個表,並添加一條記錄。在你的查詢中,選擇第二個表中的所有記錄作爲連接類型,包括第一個表中沒有匹配記錄的那些記錄。選擇第一個表中的所有字段作爲輸出。
您可以爲所有列實現零行爲的一行表。在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
條款(「列別名「)來自物化表。