我希望能夠做到這一點,返回列表中的第一個非NULL值,或者如果沒有NULL值非NULL值。我對Oracle數據庫使用了Oracle SQL。返回列表中的第一個非NULL值,如果沒有非NULL值,則返回NULL
SELECT
a.customer,
a.item,
b.item,
FROM
Orders a
LEFT JOIN
item_desc c
ON
a.item= c.tag1 OR
a.item= c.tag2 OR
a.item= c.tag3 OR
a.item= c.tag4 OR
a.item= c.tag5
LEFT JOIN
Orders b
ON
c.item = b.item AND
a.customer = b.customer
WHERE
a.itemLIKE 'CP%'
GROUP BY
a.customer,
a.item,
b.item;
我查詢的目的是爲了確保客戶擁有的主要項目,不只是沿着項目的標記購買的,但有可能是沿着屬於多個項目項的標籤你會看到下面如何Jon和邁克對項目X和Null值匹配,因爲你看到的項目422是沿着項X和B. 標籤的結果是這樣的:
Customer Item Item
Jon 422 X
Jon 424 NULL
Mike 424 X
Mike 422 Null
Jay 422 Null
Dan 422 B
Dan 422 Null
我查詢的目的是爲了確保該顧客對所購買的物品具有所需的標籤,但可能存在屬於多個物品的物品的標籤。
我想要結果是這樣的:由於Jon和Mike有匹配,null值從結果集中消失,但由於Jay沒有匹配,所以Null值保持不變。
Customer Item Item
Jon 422 X
Mike 424 X
Jay 422 Null
Dan 422 B
SQL表和結果集本質上是無序的。 「第一」是什麼意思? – 2014-12-03 14:29:04
我只想返回一個結果,但我希望能夠返回匹配的項目(如果有),並且如果沒有匹配的項目比空值 – dc4teg 2014-12-03 14:41:32
最初不計算爲NULL的第一個表達式。 – dc4teg 2014-12-03 14:47:03