Comment puis-je agrégation certains tuples comme ce
COL_1 | COL_2 | COL_3 | COL_4
val | T | F | F
val | F | T | F
avec le OU la fonction et retourner le tableau suivant?
COL_1 | COL_2 | COL_3 | COL_4
val | T | T | F
OriginalL'auteur chris | 2016-06-21
Il suffit de faire une
GROUP BY
, utilisezMAX()
de retour T si disponible, sinon F.No function matches the given name and argument types. You might need to add explicit type casts.
apparaît si vous utilisez un boolean natif de la colonne. Dans ce cas, vous devez utiliser unbool_or
comme une autre réponse suggère.les données de l'échantillon ressemble à char(1) colonnes avec T ou F en tant que valeurs. Depuis T > F, la requête fonctionne comme prévu. L'OP est l'utilisation d'Oracle, alors pourquoi devrais-je utiliser Postgres des fonctions spécifiques? BTW, ANSI SQL spécifie TRUE > FALSE.
génie! c'est vraiment simple
OriginalL'auteur jarlh
Tout comme une note de côté (ne fonctionne pas avec Oracle): Dans PostgreSQL, vous voulez faire cela:
OriginalL'auteur Cito
Si
COL_2
àCOL_4
sont les colonnes de texte (char
,varchar
,varchar2
,nvarchar
,nvarchar2
) contenant'T'
ou'F'
, alors vous pouvez simplement prendre leMAX
d'entre eux, depuis'T' > 'F'
, c'est à dire'T'
vient après'F'
dans l'ordre lexical.Explication: Le locical opération OU renvoie VRAI si au moins un des opérandes est VRAI. MAX() retourne
"T"
si au moins une valeur est"T"
et sinon"F"
.Remarque: Si le Booléen colonnes ont été déclarés comme
ou tout autre type numérique, alors je prendrais
MAX(ABS(col_x))
, depuis une valeur négative compte comme VRAI. (Si vous avez un Accès frontal avec une zone de liste déroulante attaché à un Booléen, il donne les valeurs0
ou-1
.)OriginalL'auteur Olivier Jacot-Descombes
Explication:
(S)Il est d'abord prendre le booléen dans col1, ou false si la valeur est null. Qui est converti en type de données TINYINT au lieu de BITS, qui peuvent ensuite utiliser le MAX() fonction d'agrégation qui a effectivement dit "si tout est vrai, return true" dans votre GROUPE.
OriginalL'auteur Adres Antyspamowy
Je vous suggère d'essayer ceci:
OriginalL'auteur Heffalumpene