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 P>
entrée p> résultat souhaité p> Je suis attaché à voir si le résultat souhaité peut être obtenu sans utiliser rejoindre P> P>
3 Réponses :
Vous pouvez utiliser un auto- Démo sur DB Fiddle Strong>: P> 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: | keycolumn | val1 | val2 |
| --------- | ---- | ---- |
| a | abc | abc |
| a | xyz | xyz |
| a | pqr | |
Vous pouvez utiliser ICI est un dB <> violon. Selon la base de données, vous pourriez avoir besoin d'une commande Union tout code> et groupe par code>: par code> pour le row_number () code> (le violon DB utilise Postgres qui ne nécessite pas commander par code> ). P> p>
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
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.