-2
votes

Comment renommer le résultat d'une requête avec certaines conditions

À la suite de ma requête, j'ai 3 valeurs dans une colonne. J'aurais besoin d'abréger et de retourner les valeurs de colonne. Pour par exemple. Dire que mon résultat est Centre mondial de commerce J'aurais besoin d'être imprimé comme wtc


7 commentaires

Modifier la question Ajouter quelques échantillons de données et le résultat souhaité serait utile.


Regarde le mot-clé de cas


S'il vous plaît Modifier Votre question (en cliquant sur le Modifier Lien ci-dessous) et ajoutez un Data et la sortie attendue basée sur ces données. texte formaté s'il vous plaît, Pas de shots d'écran . ( Modifier Votre question - do pas code postal ou informations supplémentaires dans Commentaires)


Bonjour, j'ai peur si je suis autorisé à mettre toute la requête que j'ai essayée. Je ne sais pas si cela aiderait. J'ai utilisé des requêtes imbriquées et capables d'obtenir le résultat de la requête. Mais je voudrais que les valeurs soient renommées. Pour par exemple. Mes valeurs (à la suite de la requête) constituent une contribution volontaire supplémentaire, mais je voulais qu'il soit imprimé en tant que AVV. J'utilise la déclaration de cas mais en vain


J'utilise la base de données Oracle


Veuillez ajouter quelques exemples de valeurs que vous souhaitez modifier. Un exemple simple devrait faire. Vous pouvez utiliser la clause comme @unhandledexcepsan dit.


Plan d'achat d'argent (PPE) de contribution volontaire (AVC) (PPE) -> Voici mes valeurs. Je voulais juste que cela soit retourné comme AVC, EPP et MPP dans une colonne. J'ai déjà essayé d'utiliser la déclaration de cas


4 Réponses :


0
votes

Vous pouvez utiliser case expressions pour ceci: xxx

La nécessité de quelque chose comme ça suggère que vous voulez une table de référence pour n'importe quelle entité. Vous constaterez peut-être que plusieurs requêtes finissent par faire la même chose - puis si une quatrième valeur est ajoutée, beaucoup de code doit changer.


1 commentaires

J'essaie avec la déclaration de cas, je manque quelque chose avec la syntaxe. J'utilise quelque chose comme "Sélectionnez case quand .. Alors .. finissez comme Col_Name de Table_Name '



0
votes

Voici ce que je viens de faire pour vous, cela fonctionne bien sur SQL Server, si vous utilisez autre chose d'autre, vous devrez peut-être changer de choses mineures, mais cela ne devrait pas être aussi difficile. N'oubliez pas de changer la taille de Varcharne pour s'adapter à la colonne de votre base de données.

DECLARE @return VARCHAR(30)
DECLARE @loop INT
DECLARE @myString VARCHAR(30)

SET @return = '' -- The variable that will be returned
SET @myString = 'World Trade Center' -- Your original value
SET @loop = LEN(@myString) - LEN(REPLACE(@myString,' ','')) + 1 -- Calculate the    nombre of spaces to know how many times to loop

DECLARE @count INT = 1;

WHILE @count <= @loop -- While u haven't parsed all words of the original string
BEGIN
   SET @return = SUBSTRING(PARSENAME(REPLACE(@myString, ' ', '.'), @count), 1, 1) + @return -- Add the first letter of each word to the return variable
   SET @count = @count + 1;
END;

SELECT @return -- And there you got 'WTC', you can use it as you want


0 commentaires

0
votes

Que diriez-vous d'un peu d'expression régulière? XXX

Qu'est-ce que ça fait?

  • Split chaque chaîne en rangées (c'est ce que regexp_substr dans la ligne 9 fait)
  • Sélectionnez la première lettre de chaque sous-chaîne (c'est ce que substr in ligne 9 fait)
  • Agrégez ces premières lettres dans le résultat (c'est ce que listagg fait)

0 commentaires

0
votes

Je ne suis pas sûr de ce qui s'est mal passé plus tôt et qu'est-ce que j'ai fait maintenant. Mais j'ai essayé d'utiliser l'expression de cas et maintenant cela a fonctionné. Merci à tous pour vos entrées.


0 commentaires