0
votes

Requête pour fusionner des lignes suivantes à Oracle / Teradata

J'ai une table avec des données comme ci-dessous xxx

Je veux la sortie ci-dessous: xxx

n_identity aura oui ou Pas de valeur pour une colonne particulière.So loin que j'ai essayé d'utiliser la requête ci-dessous, mais cela ne me donne pas le résultat souhaité: xxx

exigence mise à jour: La valeur HDFT peut être nulle et ci-dessous est un scénario: xxx

résultat attendu: xxx


4 commentaires

Sur quelle base vous voulez une classe aussi élevée et identité que oui


Pouvez-vous décrire plus en détail la logique que vous souhaitez utiliser pour déterminer les valeurs de ces colonnes dérivées - n_identity et classe ?


Je veux juste que la valeur est peuplée dans le champ N_Identity and Class (qui n'aura qu'un pour une colonne particulière). Ces valeurs doivent être remplies par rapport à la colonne HDFT non nulle et la ligne NULL HDFT doit être fusionnée / supprimée.


Votre production attendue n'est pas claire. La première sortie de votre description est en contradiction avec la deuxième sortie que vous avez mentionnée dans la section Mise à jour. Pouvez-vous donner un exemple avec tous les scénarios?


3 Réponses :


0
votes
select db,dbms,inst,schema,table,column,hdft,
case when N_identity>0 then N_Identity else 'Yes' end as N_identity
,case when class>0 then class 
when column='cust_t' then 'HIGH'
when column='Exp_t' then 'LOW' end as Class
from table
where hdft>0

1 commentaires

Ceci est juste un exemple de données et j'ai besoin d'une requête générique pour cela. Votre requête prend des valeurs codées dures que je n'ai pas besoin



2
votes

Je suppose que vous avez besoin de nvl () et first_value () Fonctions analytiques uniquement en considérant au filtre HDFT n'est pas null à la dernière étape (Une fois l'opération de sous-requête terminée par ces fonctions): xxx

Demo

ps Évitez d'utiliser des mots-clés conservés pour la nommage de la table ou des colonnes telles que Tableau , colonne .


4 commentaires

Je l'ai rencontrée sur SQL Server en ajoutant ci-dessous: Over (Partition par "Base de données" Ordre par "Base de données" Desc) à mesure que la commande est requise, mais la valeur de la classe arrive comme null pour toutes les lignes. En outre, je n'ai pas pu obtenir pourquoi "oui" est codé en dur à NVL car la valeur peut aussi être non


Mais vous @ user3901666 @ étiqueté la question par oracle . Deuxièmement, je ne peux pas connaître la logique derrière, que vous devriez élaborer, en particulier pour la colonne n_identity .


Désolé pour la confusion, mais je peux changer cela au serveur SQL, donc ce n'est pas un problème. En outre, le champ HDFT peut être nul selon mes données. Donc, la requête actuelle ne choisira pas cela.


Votre solution a fonctionné parfait pour moi. Pouvez-vous s'il vous plaît upvote ma question. Je sert une interdiction de questions maintenant.



0
votes

Vous pouvez utiliser First_Value fonction comme ceci: xxx

sortie


1 commentaires

Le champ HDFT peut être null. Veuillez consulter la description mise à jour de la demande.