我有一個簡單的查詢來查找相關表中的值。在某些情況下,該值為空。在這種情況下,我想查詢第二個表。我查看了 NZ 函式,但它不允許進行其他查詢操作。我假設我正在查看嵌套查詢或 SQL COALASCE 之類的操作。
我想先搜索 tbl_bi_item_mstr
SELECT tbl_cust_fcst_demd.cust_item_nr, tbl_bi_item_mstr.bi_item_nr
FROM tbl_cust_fcst_demd LEFT JOIN tbl_bi_item_mstr ON tbl_cust_fcst_demd.cust_item_nr = tbl_bi_item_mstr.bi_item_nr;
對于空值,我想在 tbl_cust_xref 中找到它們
SELECT tbl_cust_fcst_demd.cust_item_nr, tbl_cust_xref.bi_item_nr
FROM tbl_cust_fcst_demd INNER JOIN tbl_cust_xref ON tbl_cust_fcst_demd.cust_item_nr = tbl_cust_xref.cust_item_nr;
uj5u.com熱心網友回復:
您可以簡單地連接兩個表,并Nz()在結果欄位之間使用。
SELECT d.cust_item_nr, Nz(i.bi_item_nr, x.bi_item_nr) AS bi_item_nr
FROM (tbl_cust_fcst_demd d
LEFT JOIN tbl_bi_item_mstr i ON d.cust_item_nr = i.bi_item_nr)
INNER JOIN tbl_cust_xref x ON d.cust_item_nr = x.cust_item_nr
對于 >1 JOIN,需要括號。
使用表別名使 SQL 更易于閱讀。
uj5u.com熱心網友回復:
條件查詢可能很棘手,您可以在宏或 vba 等中進行,但這需要在 sql 陳述句之外完成。如果您希望保持簡單,我建議將 2 個表與不同的列合并。
下面聯合的示例代碼:
SELECT
tbl_cust_fcst_demd.cust_item_nr
, tbl_bi_item_mstr.bi_item_nr
, 1 as "src_priority"
FROM tbl_cust_fcst_demd LEFT JOIN tbl_bi_item_mstr ON tbl_cust_fcst_demd.cust_item_nr = tbl_bi_item_mstr.bi_item_nr
Union
SELECT tbl_cust_fcst_demd.cust_item_nr
, tbl_cust_xref.bi_item_nr
, 2 as "src_priority"
FROM tbl_cust_fcst_demd INNER JOIN tbl_cust_xref ON tbl_cust_fcst_demd.cust_item_nr
Order by src_priority
您可能仍在處理消費需求,我建議將聯合保留為查詢/視圖,并為消費查詢創建另一個選擇(取決于您的要求和性能),您可以在其中聚合或磁區等。
uj5u.com熱心網友回復:
安德烈的建議很有幫助。需要 INNER JOIN 才能更改為 LEFT JOIN 或忽略空值。
SELECT d.cust_item_nr, Nz([i].[bi_item_nr],[x].[bi_item_nr]) AS bi_item_nr
FROM (tbl_cust_fcst_demd AS d
LEFT JOIN tbl_bi_item_mstr AS i ON d.cust_item_nr = i.bi_item_nr)
LEFT JOIN tbl_cust_xref AS x ON d.cust_item_nr = x.cust_item_nr
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/429080.html
上一篇:使用OnErrorResumeNext處理表單加載錯誤
下一篇:將資料連接到單個列中
