2009-02-26 6 views
1

Je souhaite sélectionner des lignes dans une table.SQL Query + champs par défaut dans la sortie

Avec les colonnes normales que je récupère du résultat de la requête, j'ai également besoin d'ajouter un champ supplémentaire dans le jeu de résultats.

J'exporte la table dans le fichier csv. Le fichier de sortie aura des champs supplémentaires avec les valeurs de colonne normales qui ont été renvoyées à partir de la requête.

Pour la table ex a la colonne A, B et C qui a ABC
11 Bob S
12 Gary J
13 Andy K

Maintenant, mon fichier de sortie devrait avoir

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

(Une façon est d'abord ne sélectionnez A, B, C de test_table puis manipuler le fichier en ajoutant les 2 champs manuellement)

Est-il possible que je puisse obtenir les 2 supplémentaires valeurs dans la requête elle-même en tant que valeurs codées en dur?

Répondre

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

Est-ce que les valeurs 1, 2, 3 sont codées en dur ou doivent-elles être incrémentées?

+0

1,2,3 doit être incrémental –

0

Oui, en fait, c'est assez facile. Ce serait quelque chose comme ceci: SELECT champ1, champ2, « par défaut » AS Field3 « Défaut2 » AS field4 DE table OU ...

1

utilisation peut utiliser une sous requête pour obtenir la valeur ajoutée. Celle-ci repose sur une commande par des valeurs uniques dans la colonne 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 

Cela répond aveuglément à votre question ... J'ai le sentiment qu'il est plus à votre question et de bien meilleures façons d'atteindre réellement votre objectif final.

0

Vous pouvez obtenir le champ incrémentée oracle avec la colonne pseudo rownum ou no_lig

Je continue à oublier. Mais cela sera différent pour d'autres bases de données.

4

Si vous utilisez SQL Server 2005+, en utilisant la fonction ROWNUMBER devrait faire bien.

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

Je Güssing le dernier champ est un compteur de ligne et vous ne spécifiez pas la base de données, mais pour Oracle cela devrait fonctionner:

sélectionner A, B, C, 'DDD', rownum de ex;