需要 (Teradata) SQL 有关选择特定行的帮助
Need (Teradata) SQL Help On Selecting Specific Rows
我有一个提取以下内容的查询 table,但我真正感兴趣的是我的结果生成的突出显示的行。我试图在查询中编写一个 case 语句,但我意识到我忽略了一些我试图保留的 grp_mkt 记录。逻辑本质上是我想要记录不在 grp_mkt 中的段和段,如果你不在 grp_mkt 中。我可能可以连接同一个查询来找到它,但是 tables 是大量的(印象级别数据),我不想再次尝试拉 tables。
您似乎想要一次拉出细分市场,并优先考虑 grp_market
以外的任何市场。这是一种方法:
with t as (
select t.*,
row_number() over (partition by segment order by (case when market = grp_mkt then 1 else 2 end) desc) as seqnum
from <your query/table here> t
)
select t.*
from t
where seqnum = 1;
如果您可以有多个段(非 grpmkt)并且您想要所有段,那么使用 rank()
而不是 row_number()
就可以了。
我有一个提取以下内容的查询 table,但我真正感兴趣的是我的结果生成的突出显示的行。我试图在查询中编写一个 case 语句,但我意识到我忽略了一些我试图保留的 grp_mkt 记录。逻辑本质上是我想要记录不在 grp_mkt 中的段和段,如果你不在 grp_mkt 中。我可能可以连接同一个查询来找到它,但是 tables 是大量的(印象级别数据),我不想再次尝试拉 tables。
您似乎想要一次拉出细分市场,并优先考虑 grp_market
以外的任何市场。这是一种方法:
with t as (
select t.*,
row_number() over (partition by segment order by (case when market = grp_mkt then 1 else 2 end) desc) as seqnum
from <your query/table here> t
)
select t.*
from t
where seqnum = 1;
如果您可以有多个段(非 grpmkt)并且您想要所有段,那么使用 rank()
而不是 row_number()
就可以了。