Je ne fais pas beaucoup de SQL, et la plupart du temps, je fais des opérations CRUD. De temps en temps, je vais obtenir quelque chose d'un peu plus compliqué. Donc, cette question peut être une question de débutant, mais je suis prêt. Je viens d'essayer de comprendre cela pendant des heures, et ça n'a servi à rien.SELECT avec une colonne calculée qui dépend d'une corrélation
Alors, imaginez la structure de tableau suivant:
> | ID | Col1 | Col2 | Col3 | .. | Col8 |
Je veux sélectionner ID et une colonne calculée. La colonne calculée a une plage de 0 à 8 et contient le nombre de correspondances à la requête. Je souhaite également limiter l'ensemble de résultats pour inclure uniquement les lignes ayant un certain nombre de correspondances.
Ainsi, à partir de ces données d'échantillon:
> | 1 | 'a' | 'b' | 1 | 2 |
> | 2 | 'b' | 'c' | 1 | 2 |
> | 3 | 'b' | 'c' | 4 | 5 |
> | 4 | 'x' | 'x' | 9 | 9 |
Je veux interroger sur Col1 = 'a' OU Col2 = 'c' OU Col3 = 1 OU Col4 = 5 où le résultat calculé> 1 et ont le jeu de résultats ressembler à:
> | ID | Cal |
> | 1 | 2 |
> | 2 | 2 |
> | 3 | 2 |
J'utilise T-SQL et SQL Server 2005, si elle compte, et je ne peux pas changer le schéma DB.
Je préfère également le garder comme une requête autonome et ne pas avoir à créer une procédure stockée ou une table temporaire.
Essayez ceci: SELECT * FROM table WHERE (Col1 = 'a' OU Col2 = 'c' OU Col3 = 1 OU Col4 = 5) ET (COUNT (Col1)> 1 OU COUNT (Col2)> 1 OU COUNT (Col3)> 1 ou COUNT (Col4)> 1) GROUPE PAR Col1, Col2, Col3, Col4 Non testé ... – Havenard
Pouvez-vous expliquer votre table de résultats? – pjp
Pourquoi, dans votre exemple, votre ensemble de résultats pour Id = 3 a-t-il un total de colonnes calculé de 3? On dirait que cela devrait être 2. – jro