由于JOIN
通信方式(电话、电子邮件等)的原因,我们得到了很多重复项,因为一家公司可以有多种通信方式(CICM.CLIENT_VALUE)
。
我的问题是......
有没有办法将选择语句合并到如果不在client_Value
现场,如果值= EMAIL&Phone然后只为此拉EMAIL CUSTOMER_ID
,如果他们没有电子邮件并且只有电话,那么拉电话
现在我可以有CUSTOMER_ID
= 1 并且有 2 条记录具有相同的数据,但它们client_value
会有所不同,因为它们有电子邮件和电话,所以我得到 2 条返回的记录,而不是优先考虑 1。
这是一张显示我所引用内容的图片...您可以看到两条记录上所有涂黑的字段都具有相同的值,但 contact_type 和值不同。如果可以的话,我想优先选择 PHONE 而不是 EMAIL,而不是同时选择 PHONE 以减少记录返回计数......
如果这需要澄清,请告知。
SELECT DISTINCT INV.CUSTOMER_ID
, INV.ADDRESS_ID
, INV.NAME
, INV.ADDRESS1
, INV.ADDRESS2
, INV.CITY
, INV.STATE
, INV.ZIP_CODE
, INV.COUNTRY
, CICM.CLIENT_VALUE as CONTACT_TYPE
, CICM.VALUE
, CICM.DESCRIPTION
, INV.REGION_CODE
, INV.SITE
, LD.LSTINVDATE
, CASE WHEN TO_DATE(INV.INVDATE) BETWEEN TO_DATE('01-Oct-13') AND TO_DATE('30-Sep-15') THEN SUM(INV.SALES) ELSE 0 END AS TWO_YEARS
, CASE WHEN TO_DATE(INV.INVDATE) BETWEEN TO_DATE('01-Oct-15') AND SYSDATE THEN SUM(INV.SALES) ELSE 0 END AS SALESPROGRESS
, SUM(INV.SALES) AS TOTALSALES
FROM IFSINFO.HB_INVOICING_ALL INV
LEFT JOIN IFSINFO.HB_LAST_INVOICE_DATE LD
ON (INV.COMPANY = LD.COMPANY)
AND (INV.CUSTOMER_ID = LD.IDENTITY)
LEFT JOIN IFSAPP.CUSTOMER_INFO_COMM_METHOD CICM
ON (INV.ADDRESS_ID = CICM.ADDRESS_ID)
AND (INV.CUSTOMER_ID = CICM.CUSTOMER_ID)
WHERE INV.CUST_GRP = '4'
AND INV.COMPANY = '20'
AND INV.STATE = '&State'
GROUP BY INV.COMPANY
, INV.CUSTOMER_ID
, INV.ADDRESS_ID
, INV.NAME
, INV.ADDRESS1
, INV.ADDRESS2
, INV.CITY
, INV.STATE
, INV.ZIP_CODE
, INV.COUNTRY
, CICM.CLIENT_VALUE
, CICM.VALUE
, CICM.DESCRIPTION
, INV.REGION_CODE
, INV.SITE
, LD.LSTINVDATE
, INV.INVDATE
HAVING SUM(CASE WHEN INV.INVDATE >= TO_DATE('01-Oct-13')
AND INV.INVDATE < TO_DATE('30-Sep-15')
THEN INV.SALES ELSE 0
END) = 0
如果我很好地理解了您的问题,您应该在和部分
DECODE
的查询中使用该函数。SELECT
GROUP BY
注意:出于性能目的,您可以使用该函数创建索引。