having 子句的条件
Condition in having clause
我有一个问题:
我可以在 having 子句中加上条件吗?
我试过这样的条件:
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)
)
)
这个条件不成立。我怎样才能制定条件来修补这个问题?
谢谢
你可以在 having 子句中加入条件,但不能在条件中加入 having 子句
HAVING 是按结果而不是函数过滤组的子句..例如
........
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)
.......
尝试使用 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)
我有一个问题: 我可以在 having 子句中加上条件吗?
我试过这样的条件:
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)
)
)
这个条件不成立。我怎样才能制定条件来修补这个问题?
谢谢
你可以在 having 子句中加入条件,但不能在条件中加入 having 子句
HAVING 是按结果而不是函数过滤组的子句..例如
........
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)
.......
尝试使用 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)