Запрос SQL + поля по умолчанию в выводе - PullRequest
1 голос
/ 27 февраля 2009

Я хочу выбрать несколько строк в таблице.

Наряду с обычными столбцами, которые я получаю из результата запроса, мне также нужно добавить в набор результатов дополнительное поле.

Я экспортирую таблицу в файл csv. Выходной файл будет иметь несколько дополнительных полей вместе с обычными значениями столбцов, которые были возвращены из запроса.

Для таблицы ex есть столбцы A, B и C. A B C
11 Боб S
12 Gary J
13 Энди К

Теперь мой выходной файл должен иметь

11, Боб, S, "DDD", 1
12, Gary, J, "DDD", 2
13, Энди, К, "ДДД", 3

(Одним из способов было сначала выбрать A, B, C из test_table, а затем манипулировать файлом, добавив 2 поля вручную)

Есть ли способ получить дополнительные 2 значения в самом запросе в виде жестко закодированных значений?

Ответы [ 7 ]

4 голосов
/ 27 февраля 2009

Если вы используете SQL Server 2005+, функция ROWNUMBER должна работать нормально.

SELECT A, B, C, 'DDD' AS D,
ROW_NUMBER() OVER (ORDER BY A) AS E
FROM Table
1 голос
/ 27 февраля 2009

Использование может использовать подзапрос, чтобы получить инкрементное значение. Это зависит от порядка и уникальных значений в столбце 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

Это слепой ответ на ваш вопрос ... У меня такое чувство, что есть еще кое-что для вашего вопроса и гораздо лучшие способы реально достичь вашей конечной цели.

0 голосов
/ 27 февраля 2009

Я полагаю, что последнее поле является счетчиком строк, и вы не указываете базу данных, но для Oracle это должно работать:

выберите A, B, C, DDD, rownum от бывшего;

0 голосов
/ 27 февраля 2009
SELECT  A,
        B,
        C,
        'DDD' AS D,
        ROW_NUMBER() OVER (ORDER BY A) AS 'E'
FROM    myTable

Также ищите здесь ответ sql-query-that-numbersates-the-return-result

0 голосов
/ 27 февраля 2009

Вы можете получить увеличивающееся поле с оракулом с помощью псевдостолбца rownum или row_num

Я постоянно забываю. Но это будет отличаться для других баз данных.

0 голосов
/ 27 февраля 2009

Да, на самом деле это довольно просто. Это было бы что-то вроде этого: ВЫБЕРИТЕ field1, field2, «Default» AS field3, «Default2» AS field4 FROM table WHERE ...

0 голосов
/ 27 февраля 2009
SELECT A, B, C, 'DDD' as "D", 1 as "E"
FROM myTable
WHERE ...

Является ли 1, 2, 3 жестко закодированным, или это значение должно быть увеличено?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...