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

Développement SQL Server Discussion :

Remplacer un Case dans une View


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Remplacer un Case dans une View
    Bonjour,

    Voila mon probléme: J'ai mis un CASE dans une VIEW apparemment SQL server 2000 aime pas trop ça car ce case provoque une alerte (Query designer does not support the case SQL construct) malgré cette alerte la View me renvois les résultats demandé mais je ne peut pas sauvegardé mon code après l'avoir lancé (mais avant oui ^^)

    Ma question: y a t il une alternative au CASE? et en quoi l'alerte est dérangeante

    voila mon case:
    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
    25
    BKG_Quantity = CASE 
     
    					WHEN BKG_Loading_Type = 1 THEN '100' 
    					WHEN BKG_Loading_Type = 2 THEN '116' 
    					WHEN BKG_Loading_Type = 3 THEN '152' 
    					WHEN BKG_Loading_Type = 4 THEN '76' 
    					WHEN BKG_Loading_Type = 5 THEN '76' 
    					WHEN BKG_Loading_Type = 6 THEN '106' 
    					WHEN BKG_Loading_Type = 7 THEN '120' 
    					WHEN BKG_Loading_Type = 8 THEN '100' 
    					WHEN BKG_Loading_Type = 9 THEN '84' 
    					WHEN BKG_Loading_Type = 10 THEN '78' 
    					WHEN BKG_Loading_Type = 11 THEN '68' 
    					WHEN BKG_Loading_Type = 12 THEN '152' 
    					WHEN BKG_Loading_Type = 13 THEN '120' 
    					WHEN BKG_Loading_Type = 14 THEN '60' 
    					WHEN BKG_Loading_Type = 15 THEN '74' 
    					WHEN BKG_Loading_Type = 21 THEN '128' 
    					WHEN BKG_Loading_Type = 22 THEN '116' 
    					WHEN BKG_Loading_Type = 23 THEN '140' 
    					WHEN BKG_Loading_Type = 24 THEN '104' 
    					WHEN BKG_Loading_Type = 99 THEN '180' 
    					ELSE 'NA'
     
    				     END
    Merci d'avance

  2. #2
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    quel outil utilisez vous pour créer votre vue ? SQL Server Enterprise Manager?
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Il faudrait que tu donnes tout le code de ta vue parce ton BKG_Quantity = CASE est bizarre je trouve !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Oui j'utilise entreprise manager.
    Voila mon code complet pour cette View. Soyez indulgent je débute

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    SELECT     
    	TOP 1000 
     
    		'J' 
    		+ RIGHT(CAST(dbo.PROD_RUN_BKG.BKG_Run_Year AS varchar(4)), 2) 
    		+ RIGHT('0000' + CAST(dbo.PROD_RUN_BKG.BKG_Run_Number AS varchar(4)),4) 
    		AS BKG_RUN_Number, 
     
    		        'Not Available' AS BKG_GroupNumber, 
    		        'Not Available' AS BKG_Work_Order, 
    			'Not Available' AS BKG_Part_Number, 
                            dbo.PROD_Forming_Lot.Coke_Type, 
    			dbo.PROD_Forming_Lot.Nominal_Length, 
    			dbo.PROD_Forming_Lot.Nominal_Diameter, 
                            dbo.PROD_RUN_BKG.BKG_Loading_Type, 
     
                          BKG_Quantity = CASE 
     
    					WHEN BKG_Loading_Type = 1 THEN '100' 
    					WHEN BKG_Loading_Type = 2 THEN '116' 
    					WHEN BKG_Loading_Type = 3 THEN '152' 
    					WHEN BKG_Loading_Type = 4 THEN '76' 
    					WHEN BKG_Loading_Type = 5 THEN '76' 
    					WHEN BKG_Loading_Type = 6 THEN '106' 
    					WHEN BKG_Loading_Type = 7 THEN '120' 
    					WHEN BKG_Loading_Type = 8 THEN '100' 
    					WHEN BKG_Loading_Type = 9 THEN '84' 
    					WHEN BKG_Loading_Type = 10 THEN '78' 
    					WHEN BKG_Loading_Type = 11 THEN '68' 
    					WHEN BKG_Loading_Type = 12 THEN '152' 
    					WHEN BKG_Loading_Type = 13 THEN '120' 
    					WHEN BKG_Loading_Type = 14 THEN '60' 
    					WHEN BKG_Loading_Type = 15 THEN '74' 
    					WHEN BKG_Loading_Type = 21 THEN '128' 
    					WHEN BKG_Loading_Type = 22 THEN '116' 
    					WHEN BKG_Loading_Type = 23 THEN '140' 
    					WHEN BKG_Loading_Type = 24 THEN '104' 
    					WHEN BKG_Loading_Type = 99 THEN '180' 
    					ELSE 'NA'
     
    				     END
     
    FROM            
    		dbo.PROD_Electrode_BKG 
    		INNER JOIN dbo.PROD_RUN_BKG 
    		ON dbo.PROD_Electrode_BKG.BKG_Number = dbo.PROD_RUN_BKG.BKG_Number 
    		AND dbo.PROD_Electrode_BKG.BKG_Run_Number = dbo.PROD_RUN_BKG.BKG_Run_Number 
    		AND dbo.PROD_Electrode_BKG.BKG_Run_Year = dbo.PROD_RUN_BKG.BKG_Run_Year 
     
    		INNER JOIN dbo.PROD_Electrode 
    		ON dbo.PROD_Electrode_BKG.FO_Number = dbo.PROD_Electrode.FO_Number 
     
    		INNER JOIN dbo.PROD_Forming_Lot 
    		ON dbo.PROD_Electrode.Forming_Lot = dbo.PROD_Forming_Lot.Forming_Lot 
    		AND dbo.PROD_Electrode.Nominal_Diameter = dbo.PROD_Forming_Lot.Nominal_Diameter 
    		AND dbo.PROD_Electrode.Nominal_Length = dbo.PROD_Forming_Lot.Nominal_Length
    @CinePhil: j'ai fait comme sur MSDN http://msdn.microsoft.com/fr-fr/library/ms181765.aspx

  5. #5
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Essayez de créer votre vue dans Query Analyzer ... Histoire de voir
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Oui je l'ai déjà fait c'est comme ça que je l'ai créé il me dit que tout est ok mais quand je l'ouvre avec clic droit design vue je ne vois pas les tables et les liaisons que j'ai indiqué et si je modifie le code directement dans cette interface il m'annonce une erreur et je ne peut plus sauvegarder.

    Je sais pas si c'est clair

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    OK c'est bien ce que je pensais, ton CASE est dans le SELECT.
    La syntaxe normale est alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CASE
      WHEN condition THEN valeur
    END AS alias
    Tu devrais donc plutôt écrire :
    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
    CASE 
        WHEN BKG_Loading_Type = 1 THEN '100' 
        WHEN BKG_Loading_Type = 2 THEN '116' 
        WHEN BKG_Loading_Type = 3 THEN '152' 
        WHEN BKG_Loading_Type = 4 THEN '76' 
        WHEN BKG_Loading_Type = 5 THEN '76' 
        WHEN BKG_Loading_Type = 6 THEN '106' 
        WHEN BKG_Loading_Type = 7 THEN '120' 
        WHEN BKG_Loading_Type = 8 THEN '100' 
        WHEN BKG_Loading_Type = 9 THEN '84' 
        WHEN BKG_Loading_Type = 10 THEN '78' 
        WHEN BKG_Loading_Type = 11 THEN '68' 
        WHEN BKG_Loading_Type = 12 THEN '152' 
        WHEN BKG_Loading_Type = 13 THEN '120' 
        WHEN BKG_Loading_Type = 14 THEN '60' 
        WHEN BKG_Loading_Type = 15 THEN '74' 
        WHEN BKG_Loading_Type = 21 THEN '128' 
        WHEN BKG_Loading_Type = 22 THEN '116' 
        WHEN BKG_Loading_Type = 23 THEN '140' 
        WHEN BKG_Loading_Type = 24 THEN '104' 
        WHEN BKG_Loading_Type = 99 THEN '180' 
        ELSE 'NA'
    END AS BKG_Quantity
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    J'ai déjà essayer c'est d'ailleurs par ça que j'avais commencé avant d'aller sur MSDN ça fait exactement la même chose

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 766
    Points : 52 561
    Points
    52 561
    Billets dans le blog
    5
    Par défaut
    1) la syntaxe MonNomDeColonne = expression est une très vieille syntaxe de SQL Server Sybase non normative et considérée comme obsolète depuis la version 7
    Il faut utiliser expression [ AS ] MonNomDeColonne qui est la norme !

    2) Les outils graphiques quel qu'ils soient (et SSMS et Em en font partie) ne peuvent exprimer toutes les requêtes SQL. Évitez de les utiliser. Faire des requêtes sous forme graphique n'amène à rien !
    En l'occurrence il s'agit d'une impossibilité lié à lIHM sans aucune conséquence sur le code SQL !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  10. #10
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Ok donc c'est pas un problème en fait. Je le met en forme avec le AS et vamos

    Merci pour l'explication (j'ai du allé voir la signification de IHM XD)

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. Remplacement de caracteres dans une ligne
    Par tibyann dans le forum Linux
    Réponses: 10
    Dernier message: 14/02/2006, 12h12
  3. Voisinage de "cases" dans une liste
    Par progfou dans le forum Calcul scientifique
    Réponses: 5
    Dernier message: 18/01/2006, 08h43
  4. Réponses: 2
    Dernier message: 10/06/2002, 11h03

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