【发布时间】:2018-10-12 18:01:25
【问题描述】:
我有一个查询结果的表(它很大!),看起来像这样。
表试图按类型计算每个 id 中的一组名称(seq_num 1,2..),但当不同类型出现在同一个 id 中时,它会留下零
我想得到一个看起来像这样的结果。
不能使用 subquery 或 max ,因为这需要 group by ,因为查询已经太复杂了。
非常感谢这里的一些帮助。 谢谢!
最右边那四列的查询代码:
CASE WHEN (TYPE = 'E') THEN (DENSE_RANK() OVER (PARTITION BY ID,TYPE ORDER BY NAME) + DENSE_RANK() OVER (PARTITION BY ID, TYPE ORDER BY NAME DESC) - 1) ELSE 0 END AS NC_E,
CASE WHEN (TYPE = 'M') THEN (DENSE_RANK() OVER (PARTITION BY ID,TYPE ORDER BY NAME) + DENSE_RANK() OVER (PARTITION BY ID, TYPE ORDER BY NAME DESC) - 1) ELSE 0 END AS NC_M,
CASE WHEN (TYPE = 'D') THEN (DENSE_RANK() OVER (PARTITION BY ID,TYPE ORDER BY NAME) + DENSE_RANK() OVER (PARTITION BY ID, TYPE ORDER BY NAME DESC) - 1) ELSE 0 END AS NC_D,
CASE WHEN (TYPE = 'C') THEN (DENSE_RANK() OVER (PARTITION BY ID,TYPE ORDER BY NAME) + DENSE_RANK() OVER (PARTITION BY ID, TYPE ORDER BY NAME DESC) - 1) ELSE 0 END AS NC_C
注意:我有其他 ID,其中 TYPE 没有改变,而且它工作正常,我可以理解为什么会这样。问题在于每个 ID 中的信息非常多样化。
【问题讨论】:
-
您能否展示在现有查询中如何选择这些列?这可能是一些简单的 OLAP 函数。
-
我刚刚更新了它,希望能回答你的问题。不过感谢您的快速回复。
标签: teradata teradata-sql-assistant