J'ai reçu un tableau qui est rempli par '1' et '0' selon les réponses oui/non à un sondage. On m'a demandé d'identifier toutes les réponses totalement distinctes, c'est-à-dire les personnes ayant répondu «Oui» aux questions 1, 17, 23, 234 et 238. Il y a beaucoup de colonnes (plus de 500) et donc beaucoup de permutations. Des idées?Identifier les correspondances de lignes sur plusieurs colonnes
Répondre
Les chiffres que vous mentionnez sont un peu déroutants: sont-ils juste un exemple? Vous connaissez l'instruction DISTINCT
en SQL? Cela, et la sélection correcte des colonnes que vous voulez, devrait résoudre votre problème.
La réponse de Byron (maintenant supprimée: elle avait un select distinct avec toutes les 500 colonnes écrites à la main) est bonne, et utilise des noms de colonnes explicites, ce qui est une bonne pratique dans de nombreux cas. Si vous voulez une notation plus courte, votre version sql peut prendre en charge Select Distinct *
.
Les chiffres mentionnés étaient juste un exemple. Je dois admettre que je n'étais pas au courant que la clause DISTINCT pourrait être utilisée sur plusieurs colonnes (enthousiaste novice - désolé). – Leem
select count(distinct col_name) from table_name where answer = '1' and id in (1,17,23,234,238)
Employez votre éditeur de texte ou utilisez votre outil de base de données pour produire une liste des noms de colonnes,
puis juste faire ce
select max(person_id)
from answer_table
group by (
a1,a2,a3,.... -- paste list of columns here.
)
having count(
a1,a2,a3....
) = 1; -- return only answer sets that have no duplicate
max(person_id)
va se retirer l'ID de la personne seule sans casser le groupe par.
Ah, mon interprétation des réponses distinctes comprenait des personnes distinctes aussi, mais ce n'est probablement pas correct. – Tobiasopdenbrouw
Il y a seulement certaines questions qui se rapportent à la personne qui remplit le formulaire. Je crois (et j'espère) qu'on leur donnera une pièce d'identité unique. Je peux omettre ces noms de colonne de la clause GROUP BY. – Leem
oh, ouais whoops ... il y aurait une identification de personne là-bas ne serait pas là .... OK, code édité. –
Les déclarations suivantes présupposent votre entrée est 2,3 et les colonnes sont 2Q, 3Q ...
DECLARE @QueryInput VARCHAR(100)
DECLARE @Query nVARCHAR(4000)
SET @QueryInput = '2,3'
SET @QueryInput = REPLACE(@QueryInput,',','=1 AND Q')
SET @QueryInput = 'Q'[email protected]
SET @QueryInput = @QueryInput+'=1'
PRINT @QueryInput
SET @Query = 'SELECT * FROM answer_table WHERE '[email protected]
PRINT @Query
EXEC SP_EXECUTESQL @Query
- 1. Plusieurs lignes dans plusieurs colonnes
- 2. Trouver des correspondances dans plusieurs colonnes dans différents ordres
- 3. Diviser plusieurs colonnes en plusieurs lignes
- 4. Comptage des lignes de plusieurs colonnes distinctes
- 5. Envelopper une table ou des colonnes DIV sur plusieurs lignes
- 6. Affichage des lignes dans plusieurs colonnes
- 7. DataView.RowFilter, plusieurs valeurs possibles sur plusieurs colonnes
- 8. Crystal Report: Affichage simple des données de colonnes dans les lignes de plusieurs colonnes
- 9. Transpose les colonnes en lignes
- 10. Sélection de plusieurs colonnes et lignes pour le formatage - Excel
- 11. rejoindre sql intérieure - plusieurs colonnes au lieu de lignes
- 12. sur plusieurs VERIFIER CONTRAINTE colonnes
- 13. Compter sur plusieurs colonnes DISTINCT
- 14. Oracle: "grep" sur plusieurs colonnes?
- 15. Ordre d'index sur plusieurs colonnes
- 16. Utilisation d'index sur plusieurs colonnes
- 17. Mettre à jour plusieurs colonnes sur plusieurs lignes dans une instruction SQL?
- 18. Comment pouvez-vous identifier les colonnes PK dans une vue
- 19. Contrainte unique sur plusieurs colonnes
- 20. Comment faire pivoter les lignes en colonnes (pivotantes sur mesure)
- 21. Base de données - Index sur plusieurs colonnes
- 22. RegEx plusieurs correspondances dans le texte
- 23. Comptabiliser les occurrences de valeurs sur plusieurs colonnes
- 24. de fonctionnement sur les lignes et sur les colonnes d'une matrice produit duplication de code
- 25. Nhibernate Relations de mappage sur plusieurs colonnes
- 26. SELECT JOIN dans la même table SUR plusieurs lignes
- 27. jQuery regex sur plusieurs lignes
- 28. montrent plusieurs mois datepicker sur plusieurs lignes
- 29. Colonnes/lignes dynamiques
- 30. Comment identifier les sections de code exécutées par plusieurs threads
qui SGBDR et peut vous fournir une entrée d'échantillonnage et de sortie? –
SQL Server 2000. Malheureusement, je n'ai pas de données d'exemple (542 questions seraient beaucoup à télécharger). Le sondage est en cours d'achèvement au moment où nous parlons, et on m'a donné une idée de ce à quoi ressemblerait la table. Pensé que je ferais mes devoirs d'abord .... – Leem