這是我的要求,我必須通過加入 3 個表來獲取客戶報告,其中應包括 CUST_ID(主鍵)、PHONE_NUM(強制)、EMAIL(可選)、ATTRIBUTE_VALUE(強制)。該報告應包含唯一具有 ATTRIBUTE_VALUE = 'REG' 和任何內容的注冊客戶。但 ATTRIBUTE_VALUE 不應該有“UNREG”和“GUEST”;
表名:CST_CUST_ATTRIBUTES
| cust_id | 屬性值 |
|---|---|
| 第一的 | 排 |
| 第二 | 排 |
表名:CST_CUST_PHONE
| cust_id | PHONE_NUM |
|---|---|
| 第一的 | 排 |
| 第二 | 排 |
表名:CST_EMAIL
| cust_id | 電子郵件地址 |
|---|---|
| 第一的 | 排 |
| 第二 | 排 |
以下是我的查詢。連接部分很好,但 where 子句條件沒有按預期作業。我隨機驗證了記錄。“UNREG”和“GUEST”ATTRIBUTE_VALUE 客戶也包含在記錄中。
SELECT DISTINCT
A.CUST_ID,
B.PHONE_NUM,
C.EMAIL_ADDR,
A.ATTRIBUTE_VALUE
FROM
CST_CUST_ATTRIBUTES A
INNER JOIN
CST_CUST_PHONE B
ON A.CUST_ID = B.CUST_ID
LEFT JOIN
CST_EMAIL C
ON B.CUST_ID = C.CUST_ID
WHERE
A.ATTRIBUTE_VALUE = 'REG'
and A.ATTRIBUTE_VALUE not in
(
'UNREG',
'GUEST'
)
我正在使用 oracle pl/sql developer 12.在預期的 where 條件下需要幫助。
先感謝您 :)
uj5u.com熱心網友回復:
區分大小寫在這里可能是一個問題。你可以試試——
AND UPPER(A.ATTRIBUTE_VALUE) NOT IN ('UNREG', 'GUEST');
uj5u.com熱心網友回復:
我懷疑where條款應該是這樣的:
where a.attribute_value = 'REG'
and not exists (select null
from cst_cust_attributes x
where x.cust_id = a.cust_id
and x.attribute_value in ('UNREG', 'GUEST')
)
但是,由于您發布的示例資料相當差,因此很難進行測驗。“排”?“REG”和“GUEST”在哪里?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/345919.html
下一篇:GROUPBY所有列?
