我想从表中选择一些行。
除了从查询结果返回的普通列外,我还需要在结果集中附加一些额外的字段。
我将表导出到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(一种方法是首先从test_table中选择A,B,C,然后通过手动附加2个字段来操作文件)
有什么方法可以将查询本身的额外2个值作为硬编码值?
答案 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
答案 6 :(得分:0)
我在说最后一个字段是一个行计数器而你没有指定数据库,但对于Oracle来说这应该有效:
选择A,B,C,'DDD',rownum 从前;