J'ai un problème. J'ai 2 tables qui sont liées par un ID.SQL - Entrées distinctes avec quelques données cruddy
TableA
ID
Price
Other_Stuff
TableB
ID
TableA_ID
Type
Age
Je peux faire:
SELECT
M1.Age,
F1.Age,
M2.Age,
F2.Age,
FROM TableA
LEFT JOIN (SELECT * FROM TableB WHERE TableB.Type='1') AS M1 ON M1.TableA_ID=TableA.ID
LEFT JOIN (SELECT * FROM TableB WHERE TableB.Type='2') AS F1 ON F1.TableA_ID=TableA.ID
LEFT JOIN (SELECT * FROM TableB WHERE TableB.Type='3') AS M2 ON M2.TableA_ID=TableA.ID
LEFT JOIN (SELECT * FROM TableB WHERE TableB.Type='4') AS F2 ON F2.TableA_ID=TableA.ID
Et les choses fonctionner comme prévu alors que les données sont bonnes, mais les données ne sont pas toujours bon. Normalement, il y a au plus un ou aucun de chaque type dans TableB. Le problème est que pour les données plus anciennes dans la table, avant que les types 3 et 5 existent, il y a la possibilité qu'il y ait deux type 2 et/ou deux type 2. dans ce cas, je voudrais que le deuxième type 1 soit traité comme un type 2 et le second type 2 comme un type 4.
Fondamentalement, je veux un seul enregistrement retourné pour chaque entrée dans la TableA avec les 4 âges énumérés dans leurs propres colonnes, je ne veux pas de plusieurs enregistrements pour chacun dans la TableA. J'utilise MS SQL 2000 .... vieux, je sais.
Merci,
Je pensais que cela aussi, mais le résultat est que la première entrée de la sous-requête est retourné. basé sur l'enregistrement 1 retourné, la partie ON de la jointure est utilisée, de sorte que le résultat final est que tous les enregistrements sauf un de la requête globale ont un âge, tout le reste est nul. – Justin808