Teradata SQL 比较组的值是否相似

Teradata SQL Compare Values for Group if it similar or not

我有一个数据 table 如下所示,我需要比较每个 CustomerIDOfferID 是否相似或不同。我试图通过

得到它
CASE
        WHEN (COUNT (DISTINCT OfferID) OVER (PARTITION BY CustomerID)) = 1  THEN 'SAME_OFFER'
        ELSE 'DIFFERENT_OFFER'
    END AS STATUS

COUNT DISTINCT 似乎不能用作 window 函数

|CustomerID|EffectiveDate|OfferID|
|----------+-------------+-------|
|123       |1-Jan-2021   |111    |
|123       |2-Jan-2021   |111    |
|123       |3-Jan-2021   |111    |
|133       |1-Jan-2021   |222    |
|133       |2-Jan-2021   |333    |
|144       |1-Jan-2021   |222    |
|144       |2-Jan-2021   |222    |
|144       |3-Jan-2021   |333    |
|144       |4-Jan-2021   |333    |

所需的输出如下

|CustomerID|EffectiveDate|OfferID|Status         |
|----------+-------------+-------+---------------|
|123       |1-Jan-2021   |111    |Same_Offer     |
|123       |2-Jan-2021   |111    |Same_Offer     |
|123       |3-Jan-2021   |111    |Same_Offer     |
|133       |1-Jan-2021   |222    |DIFFERENT_OFFER|
|133       |2-Jan-2021   |333    |DIFFERENT_OFFER|
|144       |1-Jan-2021   |222    |DIFFERENT_OFFER|
|144       |2-Jan-2021   |222    |DIFFERENT_OFFER|
|144       |3-Jan-2021   |333    |DIFFERENT_OFFER|
|144       |4-Jan-2021   |333    |DIFFERENT_OFFER|

我建议 min()max():

select t.*,
       (case when min(offerid) over (partition by customerid) = max(offerid) over (partition by customerid)
             then 'SAME_OFFER' else 'DIFFERENT_OFFER'
        end) as status
from t