J'ai une table simple: Je voudrais renvoyer une ligne pour chaque Il semble assez simple mais je me suis battu. P> P> id_fk code>. Si la valeur par défaut est
t code> puis renvoyez celui-là. Si leur n'est pas sans défaut
t code> puis renvoyer par défaut
f code>. P>
3 Réponses :
Une option est de filtrer avec une sous-requête corrélée: ceci produit un enregistrement pour chaque id_fk code>: la priorité est donnée à l'enregistrement qui a
'T' code> comme
par défaut code>, puis sur les petits
ID code>. P> p>
Merci pour votre aide. Cela a travaillé sur le simple comme prévu et devrait fonctionner lorsqu'il est intégré sur la déclaration ultérieure.
Il y a plusieurs façons de faire cela. Un moyen possible est d'utiliser la fonction Row_Number () pour cela:
select a.* from (select x.*, row_number() over(partition by x.id_fk order by x.Default desc) as rownum1 from table x) a where a.rownum1=1
SELECT id_fk, MAX(default) As default FROM SimpleTable GROUP BY id_fk
Qu'avez-vous essayé jusqu'à présent et pourquoi cela n'a-t-il pas fonctionné? N'est-ce pas un
max code> de
défaut code>?
Et si un
id_fk code> a deux
f code> s et non
t code>, lequel choisiriez-vous?
En plus du problème, vous devez Inclure le code que vous avez jusqu'à ce point B> ( faire un effort pour répondre à votre problème / question comme Le débordement de la pile n'est pas un service d'écriture de code i>). Après faire plus de recherches si vous avez un problème, vous pouvez Poster ce que vous avez essayé B> avec un Effacer l'explication de ce qui ne fonctionne pas B> et fournissant un exemple de reproductible minimal b>. Je suggère de lire Comment puis-je poser une bonne question i> et Écrire la question parfaite i> . Aussi, assurez-vous de prendre le Tour .
La table ASCII-ART était bonne: /
Il est possible de disposer de multiples f mais pas à plusieurs t, il existe également une dernière colonne mise à jour que je peux commander en utilisant votre suggestion pour renvoyer l'enregistrement requis.