Teradata SQL比较组的值(如果相似或不相似)
我有一个如下所示的数据表,我需要比较每个Teradata SQL比较组的值(如果相似或不相似),sql,teradata,Sql,Teradata,我有一个如下所示的数据表,我需要比较每个CustomerID的OfferID,如果它们相似或不同。我试着让它过去 CASE WHEN (COUNT (DISTINCT OfferID) OVER (PARTITION BY CustomerID)) = 1 THEN 'SAME_OFFER' ELSE 'DIFFERENT_OFFER' END AS STATUS 但是,countdistinct似乎不能作为窗口函数使用 |CustomerID|Eff
CustomerID
的OfferID
,如果它们相似或不同。我试着让它过去
CASE
WHEN (COUNT (DISTINCT OfferID) OVER (PARTITION BY CustomerID)) = 1 THEN 'SAME_OFFER'
ELSE 'DIFFERENT_OFFER'
END AS STATUS
但是,countdistinct
似乎不能作为窗口函数使用
|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