我有2個表中列出了某個訂單號,TableA和TableB的數量。 TableB是一個自定義字段,用戶可以輸入但不是必需的(所以很少輸入)。Oracle SQL自定義數據字段
當它是沒有輸入在DB中沒有它的記錄,它不是它的NULL它不存在。所以,如果我嘗試並左鍵連接表格或創建一個case語句,它會提取我需要的訂單號碼。
例如
order number, qty, custom qty
SO1234 10 15
SO1235 20 (not entered)
SO1236 5 12
SO1214 8 1
SO1215 2 (not entered)
SO1216 4 2
我需要的
order number, qty, custom qty **mu_qty**
SO1234 10 15 15
SO1235 20 (not entered) 20
SO1236 5 12 12
SO1214 8 1 1
SO1215 2 (not entered) 2
SO1216 4 2 2
這是我一直在努力:
SELECT s.order_bo, c.attribute, c.value, s.qty
FROM wi.sfc s LEFT OUTER JOIN wi.custom_fields c
ON s.order_bo = c.handle
WHERE c.attribute like '%YIELD_QTY%'
AND s.order_bo like '%SO1234%'
OUTPUT:
OrderBO:SO1234 YIELD_QTY 15 1.000000
如果我將訂單更改爲沒有任何輸入內容的訂單,它不會返回任何內容。
使用下面COALESCE嘗試:
SELECT s.shop_order_bo, cu.attribute, cu.value, COALESCE(CAST(cu.value AS varchar(10)), CAST(s.qty AS varchar(10))) AS mu_qty
FROM wip.sfc s, wip.custom_fields cu
WHERE cu.Attribute like '%YIELD%'
AND REGEXP_LIKE(cu.value, '^[[:digit:]]')
AND s.shop_order_bo like 'ShopOrderBO:OR01,M646LC03EF'
ORDER BY cu.value DESC
但輸出相同數量(s.qty,無論我做什麼,另外,我不得不添加的正則表達式,因爲人們在地板上有時會把在那裏的日期和其他字不像他們應該的數字,我沒有在該領域拉不幸或我會改變它)
我如何拉Custom_qty列,如果它在那裏,並拉s.qty列如果不是?
我願意接受任何建議,我仍然在學習所以它可能是一些愚蠢的,我很想念
您的標題顯示爲「Oracle」,但在您聲明「SQL Server 2012」的問題中,但查詢清楚或Oracle。那麼你真的在使用哪個**? Oracle和SQL Server是兩個非常**不同的東西。 –
@a_horse_with_no_name,是的,那是我的錯,它令人困惑。我正在使用oracle語法在SQL Server 2012中使用存儲過程。我現在正在更新這個問題,謝謝! – user3597849