0
votes

Il ne peut pas calculer le nombre (*) dans une requête sur la base de données DB2

Je veux faire un compte (*) du nombre d'une base de données DB2. La requête de base est la suivante:

select 
count(*),
SUBSTR("Request_Detail",LOCATE('/',"Request_Detail")+1,LOCATE('/',"Request_Detail",LOCATE('/',"Request_Detail")+1)-LOCATE('/',"Request_Detail"))

 from "Request_Analisys"

 WHERE
 "Sample_Date_and_Time">=1200323230000000 and "Sample_Date_and_Time"<1200332300000000
 and "Request_Detail" <> '[Summary]'
 and "Request_Detail" not like 'WS:%'

db2

1 commentaires

Sélectionnez Count (*) à partir de (votre requête de base) . Si ce n'est pas vous le souhaitez, fournissez ensuite un échantillon du jeu de résultats renvoyé par votre requête de base et le résultat que vous souhaitez obtenir.


3 Réponses :


0
votes

Quel demande_detail Substr de la ligne Pensez-vous que cela montre après le compte?
Si vous comptez les lignes, l'ensemble de résultats sera une seule ligne et utiliser toutes les colonnes de cela n'a aucun sens.

Si vous voulez plusieurs lignes, avec un compte pour chaque substrateur trouvé, vous devez groupe par ce substr.


1 commentaires

True, mais si j'ajoute le groupe par clause, j'obtiens l'erreur suivante: [Code: -138, SQL State: 22011] La déclaration n'a pas été exécutée car un argument numérique d'une fonction scalaire est hors limites. SQLCode = -138 , Sqlstate = 22011, pilote = 4.22.29



0
votes

Ceci peut fonctionner ... xxx

mais sinon cela devrait .. xxx


0 commentaires

0
votes

Je vous suggère d'utiliser regexp_extract pour choisir ce que vous voulez sortir de votre colonne "Demande_Detail". Ceci est plus flexible que d'utiliser substr et localiser , et évitera l'instruction non exécutée car un argument numérique d'une fonction scalaire est hors limites. / code> erreur

par exemple xxx

retourne xxx

donc, vous pouvez alors faire ce xxx

par exemple


0 commentaires