2016-06-10 113 views
1

我有問題: 我可以在條件中加入條件嗎?條件中有條款

我已經嘗試了條件如下:

SELECT distinct 
U.ID as USERID,   
U.CODE_PAYS, 
T.SKU, 
T.URL_IMAGE, 
T.PRODUCT_NAME_WEBSITE, 
T.BASELINE_1, 
T.URL_FICHE_PRODUIT 
FROM DATA_CATALOGUE_MARKETING T 
INNER JOIN USERS_CONTACT U 
ON T.CODE_PAYS = U.CODE_PAYS 
INNER JOIN DATA_TRANSACTION_DETAILS DTD ON DTD.ID_CONTACT = U.ID AND DTD.CODE_PAYS = U.CODE_PAYS 
INNER JOIN DATA_CATALOGUE_MARKETING DCM ON DCM.SKU = DTD.SKU AND T.INTERNAL_REF = DCM.INTERNAL_REF_NON_SAMPLE 
AND DCM.CODE_PAYS = DTD.CODE_PAYS 
AND DCM.GROUPE_ATTRIBUT = 'Sample' 
GROUP BY U.ID, U.CODE_PAYS, T.SKU, T.URL_IMAGE_PRODUIT, T.PRODUCT_NAME_WEBSITE, T.BASELINE_1, T.URL_FICHE_PRODUIT 
AND 
(
    (
     U.CODE_PAYS = 'GB' 
     HAVING MAX(convert(date,TRANS_DATE,120))) = convert(date,GETDATE()-14,120) 
    ) 
    OR 
    (
     U.CODE_PAYS = 'FR' 
     HAVING MAX(convert(date,TRANS_DATE,120))) = convert(date,GETDATE()-24,120) 
    ) 
) 

這種情況不起作用。我怎樣才能解決這個問題?

感謝

+1

請向我們展示您的完整查詢! '擁有'是在'group by'之後使用的,在您顯示的內容中不清楚 – Sam

+0

您可以發佈完整查詢以便更好地理解。現在看起來它是「Where」子句的一部分,但不能用於Where子句 –

+0

「不起作用」不是有用的描述。 –

回答

1

子句濾波器組嘗試使用CASE WHEN:

HAVING MAX(convert(date,TRANS_DATE,120)) = (CASE WHEN U.CODE_PAYS = 'GB' THEN convert(date,GETDATE()-14,120) 
               WHEN U.CODE_PAYS = 'FR' THEN convert(date,GETDATE()-24,120) 
               ELSE NULL END) 
+0

非常感謝你! – dutycorpse

1

你可以把一個條件,having子句,但不能把having子句中的條件

HAVING是結果不是函數..eg

........ 

GROUP BY U.ID, U.CODE_PAYS, T.SKU, T.URL_IMAGE_PRODUIT, T.PRODUCT_NAME_WEBSITE, T.BASELINE_1, T.URL_FICHE_PRODUIT 
HAVING MAX(convert(date,TRANS_DATE,120))) = convert(date,GETDATE()-14,120) 
....... 
+0

好吧,我明白了,我已經通過這個例子來了解我需要什麼。 如何在條款中加入條件? – dutycorpse