【问题标题】:SQL Query + default fields in the outputSQL 查询 + 输出中的默认字段
【发布时间】:2009-02-27 05:54:02
【问题描述】:

我想从表格中选择一些行。

除了从查询结果返回的普通列之外,我还需要在结果集中附加一些额外的字段。

我正在将表格导出到 csv 文件中。输出文件将包含一些额外的字段以及从查询返回的普通列值。

对于 ex 表有 A、B 和 C 列。 A B C
11 鲍勃·S
12 加里·J
13 安迪·K

现在我的输出文件应该有

11,鲍勃,S,“DDD”,1
12,加里,J,“DDD”,2
13,安迪,K,“DDD”,3

(一种方法是首先从 test_table 中选择 A、B、C,然后通过手动附加 2 个字段来操作文件)

有什么方法可以让我在查询本身中获得额外的 2 个值作为硬编码值?

【问题讨论】:

    标签: sql


    【解决方案1】:

    如果使用 SQL Server 2005+,使用 ROWNUMBER 函数应该没问题。

    SELECT A, B, C, 'DDD' AS D,
    ROW_NUMBER() OVER (ORDER BY A) AS E
    FROM Table
    

    【讨论】:

      【解决方案2】:

      使用可以使用子查询来获取增量值。这依赖于 A 列中的排序依据和唯一值。

      SELECT
          A,
          B,
          C,
          'DDD' [D],
          (SELECT COUNT(*) FROM test_table test_table2 WHERE test_table2.A <= test_table.A) [E]
      FROM
          test_table
      ORDER BY
          A
      

      这是在盲目地回答您的问题...我感觉您的问题还有更多内容以及实际实现最终目标的更好方法。

      【讨论】:

        【解决方案3】:
        SELECT A, B, C, 'DDD' as "D", 1 as "E"
        FROM myTable
        WHERE ...
        

        1、2、3是硬编码的,还是需要递增的值?

        【讨论】:

        • 1,2,3 需要增​​量
        【解决方案4】:

        是的,事实上这很容易。它会是这样的: SELECT field1, field2, 'Default' AS field3, 'Default2' AS field4 FROM table WHERE ...

        【讨论】:

          【解决方案5】:

          你可以用oracle用伪列rownum或row_num来获取递增字段

          我一直在忘记。但这对于其他数据库会有所不同。

          【讨论】:

            【解决方案6】:

            我猜测最后一个字段是行计数器,您没有指定数据库,但对于 Oracle,这应该可以:

            选择 A、B、C、'DDD'、rownum 来自前;

            【讨论】:

              【解决方案7】:
              SELECT  A,
                      B,
                      C,
                      'DDD' AS D,
                      ROW_NUMBER() OVER (ORDER BY A) AS 'E'
              FROM    myTable
              

              也可以在这里寻找答案sql-query-that-numerates-the-returned-result

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2017-12-08
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2023-03-25
                相关资源
                最近更新 更多