【问题标题】:Teradata- Summing column values by row without typing in the column nameTeradata - 按行对列值求和,无需输入列名
【发布时间】:2017-07-10 02:18:10
【问题描述】:

所以我有 100 个具有值的列,我需要对 teradata 中的每一行进行汇总。有没有一种方法可以汇总所有内容,而无需输入每个列名?

我希望结果是

SELECT  CustID,(Col1+Col2+Col3+Col4+.....................Col100)

FROM    CustomerTable

我可以在不输入列名的情况下执行此操作吗?我知道 * 将对所有行求和。同样,有没有一种方法可以对同一行的每一列中的值求和?

【问题讨论】:

  • 您的要求表明设计不佳。
  • 不。在 SQL 中,您必须输入要求和的内容。您可以...为该表/数据库表创建一个从dbc.columns 中选择的proc,打开一个游标,遍历记录并使用结果构建动态SQL 语句,然后执行它。但是......这可能比仅仅编写一个快速的 sql 语句来总结 100 列要困难 1000 倍。
  • 另外,当我遇到这样的繁琐任务时,我只需将列名转储到记事本中,然后查找逗号并将其替换为加号。工作量不大。
  • 我知道这是糟糕的设计。已通知数据库管理员。但我仍然需要把报告拿出来。记事本选项听起来是目前最简单的选项。谢谢你们:-)

标签: sql sum multiple-columns teradata


【解决方案1】:

这可能会减轻你的工作

select      '+ ' || columnname 

from        dbc.columnsv

where       databasename    = '{your database}'
        and tablename       = '{your table}'
        and columnname      not in ('CustID',...,...)

order by    columnid        

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 2021-01-05
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多