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 :

maximum dans deux champs


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 66
    Par défaut maximum dans deux champs
    Bonjourà tous,

    je désire créer une vue sur une table qui possède 3 champs: Titre,catégorie, semaine et année. Ce que je veux, c'est voir les titres les plus récents, pour chaque catégorie. Le détail qui m'embête, c'est comment faire pour "choisir la semaine la plus élevée parmis les titres dont l'année est la plus élevée"

    c'est en SQL server et j'utilise l'éditeur de view

    Merci de votre aide!

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Quelle version de SQL server ?

    Règles du forum Langage SQL à lire par tous
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 66
    Par défaut
    oh pardon, j'utilise SQL server Enterprise manager et la fenêtre "about" me dit que c'est la version 5.0. Je suis assez débutant avec tout ce qui est base de données

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    As-tu essayé quelque chose comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Titre, catégorie, max(semaine), max(année)
    FROM maTable
    GROUP BY Titre, catégorie;

  5. #5
    Membre Expert
    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
    Par défaut
    Bonjour,

    malheureusement ce GROUP BY ne donne pas le résultat qu'il semble désirer.
    Dohmaker, peux-tu nous donner la structure de ta vue ? Comment est structurée ta colonne "semaine et annee" ??

    Merci de te conformer à ces règles simples.

    Si je suppose que c'est un char(6) avec numéro iso de semaine + année, soit tu as une vue pénible pour ta recherche, alors fais le GROUP BY sur la table sous-jacente (tu la connais ?), soit tes données sont mal structurées, alors il te reste qqch comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT v.categorie, v.titre, v.semaine_et_annee
    FROM dbo.mavue v
    JOIN (SELECT categorie, MAX(RIGHT(semaine_et_annee, 4) + LEFT(semaine_et_annee, 2)) as annee_et_semaine
          FROM dbo.mavue GROUP BY categorie) v2 
    ON v.semaine_et_annee = RIGHT(annee_et_semaine, 2) + LEFT(annee_et_semaine, 4) AND
       v.categorie = v2.categorie

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 66
    Par défaut
    oui rudib, ce que je désire ressemble à ce que tu as fait. J'avais simplifié la table pour mieux comprendre, mais ce join me cause des problèmes. Voici la table que j'utilise:

    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
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tbl_availability]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[tbl_availability]
    GO
     
    CREATE TABLE [dbo].[tbl_availability] (
    	[Availibility_ID] [int] IDENTITY (1, 1) NOT NULL ,
    	[Location] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    	[Date of entry] [datetime] NULL ,
    	[Week of Availability] [int] NULL ,
    	[Description] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    	[GSDC_Name] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
    	[PA_Name] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
    	[CA_Name] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
    	[Year of Availability] [int] NULL 
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GO
    avant je croyais qu'il n'y avait qu'un champ de date (nommé [Date of Availability]) alors ma vue était codée ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE VIEW dbo.ViewBestAvailability
    AS
    SELECT     Availibility_ID, Location, [Date of entry], MAX([Date of Availability]) AS DateAvail, GSDC_Name, PA_Name, [Date of Availability], CA_Name
    FROM         dbo.tbl_availability
    GROUP BY Availibility_ID, Location, [Date of entry], GSDC_Name, PA_Name, [Date of Availability], CA_Name
    Mais la on m'a dit que la date était donnée en deux champs, soit [Week of Availability] et [Year of Availability]. Je désire la même view, mais en tenant compte du fait qu'il y a une semaine et une année... En fait, je veux surtout savoir comment arriver à la création de cette vue par moi-même dans le futur.

    Merci pour votre aide, et désolé pour le non respect des règles

Discussions similaires

  1. [AC-2010] Insertion dans deux champs en même temps
    Par birhu dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 07/07/2013, 11h08
  2. Recherche une valeur dans deux champs
    Par smotte761 dans le forum Langage
    Réponses: 2
    Dernier message: 25/03/2011, 17h13
  3. Une table mais données croisés dans deux champs
    Par nicolas54 dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/11/2008, 23h56
  4. Fractionner cellule excel dans deux champs
    Par wachoo31 dans le forum Modélisation
    Réponses: 4
    Dernier message: 17/07/2008, 09h06
  5. recherche dans deux champs
    Par schwarzy2 dans le forum Access
    Réponses: 2
    Dernier message: 10/04/2007, 17h09

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