如何根据现有列获取列的值
How to fetch the values for a column based on existing columns
我的要求是按以下格式获取数据:如果我对 COL1 具有相同的值,则应为所有行填充 COL2 的最低值,并且必须填充 COL3 的相应值(这可以硬编码,因为它不会改变)并且应该为所有行填充对应于 COL2 最低值的 COL4 的值。(这不能硬编码)
现有数据在table
SELECT COL1 , COL2 , COL3 , COL4 FROM TABLE1
COL1 COL2 COL3 COL4
1234 01 ABC YYY
1234 02 DEF ZZZ
我的预期输出是:
COL1 COL2 COL3 COL4
1234 01 ABC YYY
1234 01 ABC YYY
我尝试了以下查询,得到了 COL2 和 COL3 的输出,但我没有得到 COL4 的输出。
SELECT
COL1,
MIN(COL2) OVER (PARTITION BY COL1) AS COL2NEW,
CASE WHEN COL2NEW = 1 THEN 'ABC'
WHEN COL2NEW = 2 THEN 'DEF' END AS COL3NEW,
COL4
FROM
TABLE1
请指导我为 COL4 获得适当的输出。
你的问题比较含糊,不过我觉得FIRST_VALUE()
就是你要找的解析函数...
SELECT
COL1,
MIN(COL2) OVER (PARTITION BY COL1) AS COL2NEW,
CASE WHEN COL2NEW = 1 THEN 'ABC'
WHEN COL2NEW = 2 THEN 'DEF' END AS COL3NEW,
FIRST_VALUE(COL4) OVER (PARTITION BY COL1
ORDER BY COL2
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
)
AS COL4NEW
FROM
TABLE1
按COL2
对分区排序后取COL4
的第一个值。这意味着分区中的所有行在 COL4NEW
中获得相同的值,并且该值来自 COL2
中具有最低值的输入行。
我的要求是按以下格式获取数据:如果我对 COL1 具有相同的值,则应为所有行填充 COL2 的最低值,并且必须填充 COL3 的相应值(这可以硬编码,因为它不会改变)并且应该为所有行填充对应于 COL2 最低值的 COL4 的值。(这不能硬编码)
现有数据在table
SELECT COL1 , COL2 , COL3 , COL4 FROM TABLE1
COL1 COL2 COL3 COL4
1234 01 ABC YYY
1234 02 DEF ZZZ
我的预期输出是:
COL1 COL2 COL3 COL4
1234 01 ABC YYY
1234 01 ABC YYY
我尝试了以下查询,得到了 COL2 和 COL3 的输出,但我没有得到 COL4 的输出。
SELECT
COL1,
MIN(COL2) OVER (PARTITION BY COL1) AS COL2NEW,
CASE WHEN COL2NEW = 1 THEN 'ABC'
WHEN COL2NEW = 2 THEN 'DEF' END AS COL3NEW,
COL4
FROM
TABLE1
请指导我为 COL4 获得适当的输出。
你的问题比较含糊,不过我觉得FIRST_VALUE()
就是你要找的解析函数...
SELECT
COL1,
MIN(COL2) OVER (PARTITION BY COL1) AS COL2NEW,
CASE WHEN COL2NEW = 1 THEN 'ABC'
WHEN COL2NEW = 2 THEN 'DEF' END AS COL3NEW,
FIRST_VALUE(COL4) OVER (PARTITION BY COL1
ORDER BY COL2
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
)
AS COL4NEW
FROM
TABLE1
按COL2
对分区排序后取COL4
的第一个值。这意味着分区中的所有行在 COL4NEW
中获得相同的值,并且该值来自 COL2
中具有最低值的输入行。