-1
votes

Microsoft SQL Server Joignant conditionnel basé sur 2 colonnes

Je cherche à rejoindre 3 tables, toutes avec les mêmes données sauf une colonne est un nom différent (date différente de chacune des 3 tables). Les trois tables ressemblent à celles suivantes. L'objectif est que si une condition existe dans le tableau 1 et / ou le tableau 2 déterminer si une condition le fait ou n'existe pas dans le tableau 3 pour chaque identifiant / condition. Je suis actuellement laissé à la table 2 du tableau 1, mais je suis conscient que cela ne comptait pas si une condition du tableau 2 n'existe pas dans le tableau, de toute façon toute aide serait utile. . xxx

merci!


2 commentaires

Tagez votre question avec la base de données que vous utilisez.


@Brad. . . Votre question pourrait être plus claire. Par exemple, si les conditions changent d'année en année?


4 Réponses :


1
votes

Si votre base de données prend en charge Associez complète , vous pouvez simplement faire: xxx

sinon, il est un peu plus compliqué: Union tout et l'agrégation est une méthode: xxx


2 commentaires

Je suis d'accord sur la jointure complète entre Table1 et Table2, mais si c'était une jointure gauche à Table3 ("l'objectif est que si une condition existe dans le tableau 1 ou le tableau 2 déterminer si une condition fait ou n'existe pas dans le tableau 3 pour chaque individu id / condition. ")?


C'est correct et correspond à la condition si elle apparaît en 2018 et / ou 2019 et s'il n'est pas null.



1
votes

Que diriez-vous de cette (SQL Server Syntaxe) ...

SELECT 
    x.id
  , x.place
  , x.Condition_2018
  , x.Condition_2019
  , t3.Condition_2020 
FROM (
        SELECT 
            COALESCE(t1.id, t2.id) AS id
          , COALESCE(t1.place, t2.place) AS place
          , t1.Condition_2018
          , t2.Condition_2019
        FROM Table1 AS t1 
        FULL OUTER JOIN Table2 AS t2 ON t1.id = t2.id AND t1.place = t2.place
    ) AS x LEFT JOIN Table3 AS t3 ON x.id = t3.id AND x.place = t3.place


1 commentaires

Merci, j'ai fait des modifications et au lieu de rejoindre sur place utilisée t1.condition_2018 = t2.condition_2019 et dans la jointure gauche x.condition_2018 = t3.Condition_2020 ou x.condition_2019 = t3.Condition_2020 et exactement ce que je cherchais. Merci pour votre aide et tout le monde Elses.



0
votes

Vous semblez vouloir tout dans le tableau3 et les matchs dans les deux autres tables. C'est juste rejoindre le fichier s: xxx


0 commentaires

0
votes

Vous avez besoin d'un joint externe code> code> de Table1 code> et TABLE2 code> et a rejoindre code> sur Tablef code>:

>  id | place | Condition_2018 | Condition_2019 | Condition_2020
> --: | :---- | :------------- | :------------- | :-------------
> 123 | ABC   | flu            | flu            | flu           
> 456 | ABC   | heart attack   | null           | heart attack  
> 789 | def   | null           | copd           | copd 


1 commentaires

J'aime la coalesce dans votre jointure; plus concis que ma réponse.