-1
votes

Comment fusionner des lignes avec un groupe

J'ai un scénario où j'ai besoin de fusionner des lignes en comparant avec différentes colonnes.

Voici un exemple qui résulte d'une jointure complexe

entrée xxx

résultat souhaité xxx

Je suis attaché à voir si le résultat souhaité peut être obtenu sans utiliser rejoindre

sql

4 commentaires

Comment pouvons-nous dire quels enregistrements doivent être regroupés?


Le keyncolumn devrait être utilisé pour le groupe, si la valeur de VAL1 dans un enregistrement est dans la colonne VAL2 d'un autre enregistrement ou inversement, elle doit être affichée en tant qu'appareil unique au lieu de 2 enregistrements.


D'ACCORD. Et que devrions-nous faire si aucun enregistrement correspondant n'existe?


Si l'enregistrement n'existe pas, la valeur correspondante serait null, mais l'une de ces deux colonnes aura toujours une valeur.


3 Réponses :


0
votes

Vous pouvez utiliser un auto- rejoindre code> le tableau sur la correspondance KeyColumn code> et VAL1 / VAL2 CODE> NUTLES ET UTILISATION DISTINCT DISTINCT Code> et coalesce () code> Pour imprimer les valeurs correspondantes: xxx pré>

Démo sur DB Fiddle Strong>: P>

| keycolumn | val1 | val2 |
| --------- | ---- | ---- |
| a         | abc  | abc  |
| a         | xyz  | xyz  |
| a         | pqr  |      |


0 commentaires

-1
votes

Vous pouvez utiliser Union tout et groupe par : xxx

ICI est un dB <> violon. Selon la base de données, vous pourriez avoir besoin d'une commande par pour le row_number () (le violon DB utilise Postgres qui ne nécessite pas commander par ).


0 commentaires

-1
votes

Vous pouvez essayer ceci:

select t1.keycolumn, t1.val1,
    (select t2.val2 from table1 t2 where t2.keycolumn = t1.keycolumn and t2.val2 = t1.val1)
from table1 t1
where t1.val1 is not null


0 commentaires