Question

Dans notre base de données, nous avons un système configuré pour garder une trace des applications. Nous avons une colonne booléenne qui indique si la demande est approuvée ou non. Ensuite, il y a une autre colonne qui indique si l'application est refusée ou non. Si aucune colonne n'est vraie, l'application est considérée comme étant en attente.

Existe-t-il un moyen simple de les fusionner en une seule valeur (comme, par exemple, un tinyint ou une chaîne indiquant "approuvé", "refusé" ou "en attente") dans une vue? Ou est-ce que cela va nécessiter quelque chose comme une fonction table-value?

MISE À JOUR: il est difficile de choisir une réponse, car elles ont toutes été utiles. J'irai avec Baldy depuis qu'il a posté le premier.

Était-ce utile?

La solution

vous pouvez utiliser une déclaration de cas dans votre requête: sélectionnez le cas approuvé quand 1, puis "approuvé" sinon ...

Les instructions de cas peuvent être imbriquées afin que vous puissiez explorer les différentes options.

Pourquoi ne pas utiliser plutôt une colonne int avec 3 valeurs distinctes, ou même aller jusqu'à utiliser une colonne bool, avec la valeur null activée. Lorsque cette valeur est null, elle est en attente, 1 approuvée et 0 refusée.

Autres conseils

Vous pouvez utiliser une déclaration de cas comme ceci:

select case 
  when Approved = 1 then 'Approved'
  when Denied = 1 then 'Denied'
  else 'Pending'
  end 'Status'

Puisque vous stockez à la fois une valeur approuvée et une valeur refusée, vous devez vous préoccuper de l'ordre (qui a la priorité si les deux sont vrais?). Vous ne devez certainement mettre cela que dans une vue afin de ne pas avoir à répéter cette logique plus tard.

Suivant les autorisations NTFS, je préfère toujours que la priorité de Deny soit prioritaire:

CASE 
    --Denied has precedence
    WHEN Denied = 1 THEN 'Denied'
    WHEN Approved = 1 THEN 'Approved'
    ELSE 'Pending'
END as Status

À moins que vous n'ayez d'autres exigences qui l'excluent, j'aime plutôt la suggestion de Baldy concernant un int nullable ou une colonne de contrôle contrainte minuscule.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top