我有3張桌子我正在這裏工作。 ATTRIBUTE_MAP
,GROUP_DEFINITIONS
和GROUP_MAP
。合併的地方存在的定義
ATTRIBUTE_MAP
包含CUST_ID
和相關的ATTRIBUTE_ID
。
GROUP_DEFINITIONS
定義了一個組。它的列是GROUP_ID
,ATTRIBUTE_1
,VALUE_1
,ATTRIBUTE_2
,VALUE_2
,ATTRIBUTE_3
,VALUE_3
一個組由1到3個具有值的屬性組成。例如,一個屬性可以是「狀態」,其值爲「紐約」。對於像「擁有汽車」這樣的布爾值,值也可以爲null。
GROUP_MAP
只是將CUST_ID
映射到GROUP_ID
。
現在,我正在嘗試編寫一個腳本,查看ATTRIBUTE_MAP
並查看客戶是否屬於GROUP_DEFINITIONS
中定義的組中的一個。如果他(客戶)這樣做,則插入/更新一行到GROUP_MAP
與CUST_ID
和GROUP_ID
。我遇到問題的部分是匹配屬性值。
這是我到目前爲止有:
merge GROUP_MAP gm using
(select am.CUST_ID
,am.ATTRIBUTE_ID
,am.START_DATE
,gd.GROUP_ID
,gd.ATTRIBUTE_1
,gd.VALUE_1
,gd.ATTRIBUTE_2
,gd.VALUE_2
,gd.ATTRIBUTE_3
,gd.VALUE_3
from ATTRIBUTE_MAP am, GROUP_DEFINITIONS gd) src
on gm.GROUP_ID=src.GROUP_ID
AND gm.CUST_ID=src.CUST_ID
when not matched then -- create association in GROUP_MAP
insert (CUST_ID, GROUP_ID, FROM_DATE)
values (src.CUST_ID, src.GROUP_ID, src.START_DATE);
上午我正確地處理這個?我猜我需要改進我的合併嵌套選擇語句加入ATTRIBUTE_MAP
和PEER_GROUP_DEFINTIONS
,然後從那裏去。任何幫助/建議,將不勝感激。
下面是參考一個示例:
ATTRIBUTE_MAP
:
+---------+--------------+------------+ | CUST_ID | ATTRIBUTE_ID | VALUE | +---------+--------------+------------+ | 50 | 1 | 'New York' | +---------+--------------+------------+ | 50 | 2 | | +---------+--------------+------------+
GROUP_DEFINITIONS
:
+----------+-------------+------------+-------------+---------+-------------+---------+ | GROUP_ID | ATTRIBUTE_1 | VALUE_1 | ATTRIBUTE_2 | VALUE_2 | ATTRIBUTE_3 | VALUE_3 | +----------+-------------+------------+-------------+---------+-------------+---------+ | 10 | 1 | 'New York' | 2 | | | | +----------+-------------+------------+-------------+---------+-------------+---------+ | 20 | 2 | | | | | | +----------+-------------+------------+-------------+---------+-------------+---------+
等腳本應該生成(在GROUP_MAP
):
+---------+----------+--------+ | CUST_ID | GROUP_ID | DATE | +---------+----------+--------+ | 50 | 10 | *date* | +---------+----------+--------+ | 50 | 20 | *date* | +---------+----------+--------+
你能不能解釋一下什麼是ATTRIBUTE_MAP和GROUP_DEFINITIONS –
@KamranFarzami有關係還真是兩者之間沒有直接關係。 ATTRIBUTE_MAP將離散屬性/值映射到客戶,而GROUP_DEFINTIONS更像一個維度表 - 它只是用來定義一個組。那有意義嗎? – Ted
ATTRIBUTE_MAP記錄是否必須匹配GROUP_DEFINITIONS記錄中的所有屬性,或者只匹配其中的任何一個屬性?是空的GROUP_DEFINITIONS.ATTRIBUTE_ [X]值NULL還是空字符串? – radshop