SQL Query +输出中的默认字段

时间:2009-02-26 21:19:50

标签: sql

我想从表中选择一些行。

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

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

对于ex表,其中包含A,B和C列     A B C
    11 Bob S
    12 Gary J
    13 Andy K

现在我的输出文件应该有

11,Bob,S,“DDD”,1 12,Gary,J,“DDD”,2
13,Andy,K,“DDD”,3

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

有什么方法可以将查询本身的额外2个值作为硬编码值?

7 个答案:

答案 0 :(得分:4)

如果使用SQL Server 2005+,使用ROWNUMBER函数应该可以。

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

答案 1 :(得分:1)

使用可以使用子查询来获取增量值。这取决于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

这是盲目地回答你的问题...我觉得你的问题还有更多,以及更好的方法来实现你的最终目标。

答案 2 :(得分:0)

SELECT A, B, C, 'DDD' as "D", 1 as "E"
FROM myTable
WHERE ...

是1,2,3硬编码,还是需要增加值?

答案 3 :(得分:0)

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

答案 4 :(得分:0)

您可以使用带有伪列rownum或row_num

的oracle获取递增字段

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

答案 5 :(得分:0)

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

另请在此处查看答案sql-query-that-numerates-the-returned-result

答案 6 :(得分:0)

我在说最后一个字段是一个行计数器而你没有指定数据库,但对于Oracle来说这应该有效:

选择A,B,C,'DDD',rownum 从前;