SQL,使用列编号而不是列名

SQL,使用列编号而不是列名,sql,postgresql,Sql,Postgresql,我想知道是否有一种方法可以通过他们的编号而不是他们的名字来选择一列,我每周都从SAP下载一份报告,该报告为我提供了未来几周的预测,正如您在第2列中看到的,它从本周(第15周)开始,下一周我将运行报告,专栏2将改为第16周,以此类推 我无法创建名称为的查询,因为它每周都在更改 样本: ID week15 week16 week17 == ===== ===== ===== 1 1000 3000 1000 如果转置表并将其附加到滚动表中,则选择单个星期应该很简单 w

我想知道是否有一种方法可以通过他们的编号而不是他们的名字来选择一列,我每周都从SAP下载一份报告,该报告为我提供了未来几周的预测,正如您在第2列中看到的,它从本周(第15周)开始,下一周我将运行报告,专栏2将改为第16周,以此类推

我无法创建名称为的查询,因为它每周都在更改

样本:

ID  week15 week16 week17  
==  =====  =====  =====   
1    1000  3000   1000

如果转置表并将其附加到滚动表中,则选择单个星期应该很简单

week      ID 
======   =====  
week15    1000
week16    3000
week17    1000

尝试以下动态查询:

EXECUTE 'SELECT ID ' || ',week' || EXTRACT('week' FROM NOW()) ||  ',week' || EXTRACT('week' FROM NOW()) + 1 || ',week' || EXTRACT('week' FROM NOW()) + 2
' FROM table_name' INTO results

选择*
并在SQL之外处理?或者动态生成查询?如果列名每周更改一次,这是一种糟糕的数据库设计。您想要的输出到底是什么?