IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[SQL2K] [TSQL] Ct compter le nb de ligne "not null" pour chaque colonne d'une table


Sujet :

MS SQL Server

  1. #1
    Membre averti Avatar de Mamilie
    Inscrit en
    Février 2007
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2007
    Messages : 288
    Points : 348
    Points
    348
    Par défaut [SQL2K] [TSQL] Ct compter le nb de ligne "not null" pour chaque colonne d'une table
    Bonjour

    Je suis débutante avec MSSQL. J'ai une énorme base de données cliniques et je dois extraire de cette base, le nom de la table suivi du nom de la colonne suivi du nbre de ligne complètées. En d'autres termes, je veux le nombre de case qui ne sont pas null pour chaque colonne de chaque table.
    Quelqu'un peut m'aider?
    Merci d'avance.
    ...|\ ......._,,,---,,,_
    ../ , `.-'`'..,,,-....;-;;,_
    .| ,4- .) )-,_...;\ ( ..`'-'
    '----'' (_/--' ..`-'\_)

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bonjour,

    En utilisant COUNT(nom_de_colonne), tu va obtenir un compteur des valeurs non nulles, donc tu peux aligner tes count, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(col1), COUNT(col2), ...
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  3. #3
    Membre averti Avatar de Mamilie
    Inscrit en
    Février 2007
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2007
    Messages : 288
    Points : 348
    Points
    348
    Par défaut
    Oui ça je sais, je l'ai trouvé dans les tutoriels et faq excellents du site
    Mon pb c'est que j'ai 200 tables et 10 colonnes pour la plus petite. Je cherchais un moyen de le faire automatiquement sans devoir écrire le nom de chaque colonne...
    ...|\ ......._,,,---,,,_
    ../ , `.-'`'..,,,-....;-;;,_
    .| ,4- .) )-,_...;\ ( ..`'-'
    '----'' (_/--' ..`-'\_)

  4. #4
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Tu peux broder autour de ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    DECLARE cur CURSOR READ_ONLY
    FOR SELECT COLUMN_NAME, TABLE_SCHEMA + '.' + TABLE_NAME as TBL
    	FROM INFORMATION_SCHEMA.COLUMNS
    	ORDER BY TBL
     
    DECLARE @COLUMN_NAME sysname, @TABLE_NAME sysname
     
    OPEN cur
     
    FETCH NEXT FROM cur INTO @COLUMN_NAME, @TABLE_NAME
    WHILE (@@fetch_status <> -1)
    BEGIN
    	IF (@@fetch_status <> -2)
    	BEGIN
    		DECLARE @sql varchar(100)
    		SET @sql = 'SELECT COUNT('+@COLUMN_NAME+') FROM '+@TABLE_NAME
    		EXEC (@sql)
    	END
    	FETCH NEXT FROM cur INTO @COLUMN_NAME, @TABLE_NAME
    END
     
    CLOSE cur
    DEALLOCATE cur
    GO
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  5. #5
    Membre averti Avatar de Mamilie
    Inscrit en
    Février 2007
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2007
    Messages : 288
    Points : 348
    Points
    348
    Par défaut
    ça marche pas trop mal mais ça va prendre un temps fou pour avoir les résultats. Il a mis 10 mins pour 4 colonnes.
    Merci c'est sympa d'avoir essayé.
    Je vais tenter le copier coller ça ira plus vite même si ça risque de me prendre du temps.
    Merci encore!
    ...|\ ......._,,,---,,,_
    ../ , `.-'`'..,,,-....;-;;,_
    .| ,4- .) )-,_...;\ ( ..`'-'
    '----'' (_/--' ..`-'\_)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Exécutez le script ce soir, vous aurez le résultat demain matin. Ca vous évitera les ampoules aux doigts ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/05/2015, 23h17
  2. Réponses: 12
    Dernier message: 13/05/2014, 23h05
  3. Compter le nombre de colonnes d'une table
    Par Lord_Jago dans le forum Requêtes
    Réponses: 4
    Dernier message: 26/07/2006, 11h44
  4. Modifier l'enseble des lignes d'une colonne d'une table
    Par bencheikh dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 06/07/2006, 21h46
  5. Réponses: 6
    Dernier message: 22/09/2005, 11h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo