簡體   English   中英

MS Access 2010中日期字段的聯合查詢

[英]Union Query of Date Fields in MS Access 2010

我在包含三個字段的數據表TableofDates中有條目; ProjectID(類型= dbText),開始(類型= dbDate)和完成(類型= dbDate):

TableofDates

ProjectID   Start       Finish  
ABC         01/01/2018  09/09/2018

我想用單獨的DateA記錄(源自[TableofDates]中的[開始])和DateB記錄(源自[TableofDates]中的[Finish]形式)呈現以下數據集

托德聯盟

ProjectID   DateA       DateB
ABC         01/01/2018  
ABC                     09/09/2018

以下SQL查詢幾乎產生所需的結果:

SELECT ProjectID,DateA, '' AS DateB
FROM DtA
UNION SELECT ProjectID, '' AS DateA,DateB
FROM DtB;

我的問題是插入的空字符串會強制字段數據鍵入dbText。

相反,如果我插入Null,則只會復制出第一個日期字段:

SELECT ProjectID, DateA, Null AS DateB 
FROM DtA 
UNION SELECT ProjectID, Null AS DateA, DateB 
FROM DtB;

收益率:

ToD UNION
ProjectID   DateA       DateB
ABC         01/01/2018  
ABC     

聯盟的兩個部分分別工作:

SELECT ProjectID,DateA, Null AS DateB
FROM DtA;

產量

ToD UNION
ProjectID   DateA        DateB
ABC         01/01/2018  

SELECT ProjectID,Null AS DateA,  DateB
FROM DtB;

產量

ToD UNION
ProjectID   DateA       DateB
ABC                     09/09/2018

有什么想法可以根據需要創建帶有插入的“空”日期的TableofDates聯合,並在結果數據集中維護dbDate的數據類型?

您可以使用標題行(選擇語句返回0條記錄,但包含正確的類型和標簽)

SELECT CLng(1) As ProjectID, #2001-01-01# As DateA, #2001-01-01# As DateB
FROM MSysObjects
WHERE 1=0
UNION ALL
SELECT ProjectID, DateA, Null 
FROM DtA 
UNION ALL
SELECT ProjectID, Null, DateB 
FROM DtB;

您的查詢不起作用,因為在Access中,聯合查詢的第一個查詢確定字段的類型和標簽。 由於第一個查詢的最后一列僅包含Null ,因此Access無法確定字段類型,並選擇錯誤的字段類型。

通過使用不返回記錄但顯式設置字段類型的查詢,可以避免該問題。

請注意,將UNION (類型轉換並檢查重復項)更改為UNION ALL (不執行這些操作)也可以解決此問題。 所以2個解決方案的價格為1。

Union查詢將忽略字段別名,但第一個SELECT語句中的別名除外。

NULL值小於任何日期值,因此降序排序會將NULLS放在第一位。

此SQL生成您的示例輸出:

SELECT              ProjectID, Start AS DateA, NULL AS DateB
FROM                TableOfDates

UNION ALL SELECT    ProjectID, NULL, Finish
FROM                TableOfDates
ORDER BY            ProjectID, DateA DESC  

該表:

ProjectID   Start       Finish  
ABC         01/01/2018  09/09/2018  
DEF         01/02/2017  03/05/2018  

產生了這個結果:

ProjectID   DateA       DateB  
ABC         01/01/2018    
ABC                     09/09/2018  
DEF         01/02/2017  
DEF                     03/05/2018

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM