0
votes

SQL Server: Besoin d'aide pour écrire ce que je pense devrait être un code simple

J'ai une table simple: xxx

Je voudrais renvoyer une ligne pour chaque id_fk . Si la valeur par défaut est t puis renvoyez celui-là. Si leur n'est pas sans défaut t puis renvoyer par défaut f .

Il semble assez simple mais je me suis battu.


5 commentaires

Qu'avez-vous essayé jusqu'à présent et pourquoi cela n'a-t-il pas fonctionné? N'est-ce pas un max de défaut ?


Et si un id_fk a deux f s et non t , lequel choisiriez-vous?


En plus du problème, vous devez Inclure le code que vous avez jusqu'à ce point ( 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 ). Après faire plus de recherches si vous avez un problème, vous pouvez Poster ce que vous avez essayé avec un Effacer l'explication de ce qui ne fonctionne pas et fournissant un exemple de reproductible minimal . Je suggère de lire Comment puis-je poser une bonne question et Écrire la question parfaite . 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.


3 Réponses :


1
votes

Une option est de filtrer avec une sous-requête corrélée: xxx

ceci produit un enregistrement pour chaque id_fk : la priorité est donnée à l'enregistrement qui a 'T' comme par défaut , puis sur les petits ID .


1 commentaires

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.



1
votes

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


0 commentaires

0
votes
SELECT id_fk, MAX(default) As default
FROM SimpleTable
GROUP BY id_fk

0 commentaires