我在列别名中需要月份名称。例如:
select d.Job_name, nvl(a.cnt,0) as May, nvl(b.cnt,0) as June, nvl(c.cnt,0) as July
from (query);
这里我将5月,6月和7月的硬编码作为列别名。我需要它们动态。
我需要以下:
select d.Job_name, nvl(a.cnt,0) as (current_monthe-2), nvl(b.cnt,0) as (current_month-1), nvl(c.cnt,0) as current_month
from (inner query)
请帮我解决这个问题。如果需要任何其他信息,请告诉我。谢谢!
答案 0 :(得分:0)
您可以构建动态查询以根据需要放置列名称,例如:
EXECUTE IMMEDIATE 'select d.Job_name, nvl(a.cnt,0) as '|| to_char(add_months(SYSDATE, -2), 'Month') ||', nvl(b.cnt,0) as '|| to_char(add_months(SYSDATE, -1), 'Month') || ', nvl(c.cnt,0) as ' || to_char(SYSDATE, 'Month') || ' from (inner query)'
into v_values_set;
使用静态sql做你想做的事情是非常困难的,也许可以使用PIVOT选项来动态设置列名。