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 :

[SQL] Access => SQL Server


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 186
    Par défaut [SQL] Access => SQL Server
    Bonjour,

    Je suis actuellement en train de migrer une base Access vers SQL server.
    Je dois donc réécrire une bonne partie de mes ordres SQL.
    Je bute sur celui-là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Select distinct Count(tblCCMAction.IdAction) AS [Nb of actions] , 
    Count(IIF(tblCCMAction.ProcessTime <= tblCCMAction.Target, 1, NULL)) AS [Nb actions on time] , 
    Count(IIF(tblCCMAction.ProcessTime <= tblCCMAction.Target, 1, NULL)) / iif(Count(1)=0, 1, Count(tblCCMAction.IdAction)) AS [% actions on timePOURCENTAGE], 
    Count(IIF(tblCCMAction.ProcessTime BETWEEN 0 AND 120, 1, NULL)) AS [<2h] , 
    Count(IIF(tblCCMAction.ProcessTime BETWEEN 121 AND 240, 1, NULL)) AS [<4hours] , 
    Count(IIF(tblCCMAction.ProcessTime BETWEEN 241 AND 1440, 1, NULL)) AS [<1d] , 
    Count(IIF(tblCCMAction.ProcessTime BETWEEN 1441 AND 2880, 1, NULL)) AS [<2d] , 
    Count(IIF(tblCCMAction.ProcessTime > 2880, 1, NULL)) AS [>2 days] 
    FROM (TblCCMDossier INNER JOIN TblCCMAction ON TblCCMDossier.IdDossier = TblCCMAction.IdDossier) 
    where TblCCMDossier.CloseDate  >= #05/01/2007# 
    and TblCCMDossier.CloseDate  <= #06/11/2007#
    Comment réécrire les count ?
    Merci.
    [Access] Les bases du débogage => ici

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    ce n'est pas les count qui te bloque mais la fonction IIF

    regardes ce lien

    http://access.developpez.com/faq/?page=ExprEtCriteres

  3. #3
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 186
    Par défaut
    Effectivement, ce n'est pas le Count, mais le Iif qui n'existe pas sous SQL Server.
    Je pensais remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Count(IIF(tblCCMAction.ProcessTime > 2880, 1, NULL))
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Count(IF (tblCCMAction.ProcessTime > 2880) begin 1 end else NULL)
    Mais visiblement, c'est pas ça...
    Quelqu'un aurait une idée ?
    [Access] Les bases du débogage => ici

  4. #4
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    je pense plutot a
    Count(IIF(tblCCMAction.ProcessTime > 2880, 1, NULL))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    select
    case 
    when count(tblCCMAction.ProcessTime)> 2880 then 1
    else null
    end AS [Nb actions ON time],
    case 
    when count(tblCCMAction.ProcessTime) BETWEEN 0 AND 120 then 1
    else null
    end as [<2h], 
    etc...

  5. #5
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 186
    Par défaut
    Merci.
    C'était un Case qu'il fallait faire, pas un If.
    [Access] Les bases du débogage => ici

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

Discussions similaires

  1. convertion sql access en sql
    Par hugodu28 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/07/2012, 23h25
  2. syntaxe sql access en sql server
    Par abderrahman86 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/05/2007, 22h15
  3. convertir sql access en sql ansi
    Par Arlesien dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 21/08/2006, 16h55
  4. SQL normalisé OU SQL Access ... Lequel utiliser ... ?
    Par snoopy69 dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 29/11/2005, 16h09
  5. pb d'importation Access 2000 ==> SQL Server 7.0
    Par diabolooo dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 20/08/2003, 16h49

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