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 :

Requête de création de table


Sujet :

Développement SQL Server

  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut Requête de création de table
    Bonjour,
    malgé mes recherche sur ce forum ou ailleurs, je ne parviens pas à créer une table "nouvelle_table" à partir de ma requête sql.
    Ci dessous ma requete :
    merci de votre aide

    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
    DECLARE @StartDateTime DateTime = '20180403 04:30:00'
    DECLARE @EndDateTime DateTime =   '20180404 04:30:00'
     
    --CREATE TABLE nouvelle_table AS 
     
    SELECT
    T_Suivi.ParcelId,
    T_Suivi.PostalCode,
    CASE WHEN LEN(T_Suivi.BarCodeSuivi) = 13 then T_Suivi.BarCodeSuivi
    WHEN T_Suivi.BarCodeSuivi like '%849250' then substring(T_Suivi.BarCodeSuivi,9,13)
    when T_Suivi.BarCodeSuivi like'%250' then substring(T_Suivi.BarCodeSuivi,11,13) else T_Suivi.BarCodeSuivi END AS CodeSuivi
     
    FROM
     
    (
    SELECT 
    Parcel.PostalCode,
    Barcode.ParcelId,
    COALESCE(MAX(CASE WHEN LEN(BarCode) = 13 THEN BarCode END), MAX(BarCode)) AS BarCodeSuivi
    FROM 
    Barcode
     
     JOIN Parcel
      ON barcode.ParcelId =Parcel.Id and Barcode.Utility in(1,6) 
    JOIN ParcelEvent
               ON Parcel.Id=ParcelEvent.ParcelId AND 
                  ParcelEvent.[DateTime] BETWEEN @StartDateTime AND @EndDateTime 
     
     Join Vacation
     on Parcel.VacationId=Vacation.Id
     
     Join PrintTable
     on Vacation.IdTache=PrintTable.IdTache
     
     join PrintTableDetail
     on PrintTable.Id =PrintTableDetail.PrintTableId and 
    	Parcel.PostalCode between PrintTableDetail.beginPostalCode and PrintTableDetail.EndPostalCode  and Parcel.PostalCode is not null
     
     
    GROUP BY 
    Parcel.PostalCode,
    Barcode.ParcelId 
    ) as T_Suivi
     
    Order by
    T_Suivi.ParcelId

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 001
    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 : 22 001
    Billets dans le blog
    6
    Par défaut
    Il faut utiliser la syntaxe SELECT ... INTO :

    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
    DECLARE @StartDateTime DateTime = '20180403 04:30:00'
    DECLARE @EndDateTime DateTime =   '20180404 04:30:00'
     
    SELECT
    T_Suivi.ParcelId,
    T_Suivi.PostalCode,
    CASE WHEN LEN(T_Suivi.BarCodeSuivi) = 13 then T_Suivi.BarCodeSuivi
    WHEN T_Suivi.BarCodeSuivi like '%849250' then substring(T_Suivi.BarCodeSuivi,9,13)
    when T_Suivi.BarCodeSuivi like'%250' then substring(T_Suivi.BarCodeSuivi,11,13) else T_Suivi.BarCodeSuivi END AS CodeSuivi
     
    INTO MaNouvelleTable
     
    FROM
     
    (
    SELECT 
    Parcel.PostalCode,
    Barcode.ParcelId,
    COALESCE(MAX(CASE WHEN LEN(BarCode) = 13 THEN BarCode END), MAX(BarCode)) AS BarCodeSuivi
    FROM 
    Barcode
     
     JOIN Parcel
      ON barcode.ParcelId =Parcel.Id and Barcode.Utility in(1,6) 
    JOIN ParcelEvent
               ON Parcel.Id=ParcelEvent.ParcelId AND 
                  ParcelEvent.[DateTime] BETWEEN @StartDateTime AND @EndDateTime 
     
     Join Vacation
     on Parcel.VacationId=Vacation.Id
     
     Join PrintTable
     on Vacation.IdTache=PrintTable.IdTache
     
     join PrintTableDetail
     on PrintTable.Id =PrintTableDetail.PrintTableId and 
    	Parcel.PostalCode between PrintTableDetail.beginPostalCode and PrintTableDetail.EndPostalCode  and Parcel.PostalCode is not null
     
     
    GROUP BY 
    Parcel.PostalCode,
    Barcode.ParcelId 
    ) as T_Suivi
     
    Order by
    T_Suivi.ParcelId
    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/ * * * * *

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    merci pour cette réponse.
    Une question : je pensais que l'expression devait etre mentionnée avant le 1er select comme dans l'exemple ci dessous.
    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
    DECLARE @StartDateTime DateTime = '20180403 04:30:00'
    DECLARE @EndDateTime DateTime =   '20180404 04:30:00'
    
    INTO MaNouvelleTable
    
    SELECT
    T_Suivi.ParcelId,
    T_Suivi.PostalCode,
    CASE WHEN LEN(T_Suivi.BarCodeSuivi) = 13 then T_Suivi.BarCodeSuivi
    WHEN T_Suivi.BarCodeSuivi like '%849250' then substring(T_Suivi.BarCodeSuivi,9,13)
    when T_Suivi.BarCodeSuivi like'%250' then substring(T_Suivi.BarCodeSuivi,11,13) else T_Suivi.BarCodeSuivi END AS CodeSuivi
     
    FROM
     
    (
    SELECT

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 001
    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 : 22 001
    Billets dans le blog
    6
    Par défaut
    Non, car c'est une fois qu'il a la définition des colonnes via la clause SELECT qu'il sait comment créer les colonnes de la nouvelle table qui empreinte leurs types de données lors de l'analyse syntaxique de la requête.

    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/ * * * * *

Discussions similaires

  1. Requête de création de table qui bloque
    Par tarikchichane dans le forum SQL
    Réponses: 1
    Dernier message: 21/07/2011, 12h55
  2. Problème de requête de création de tables
    Par Kawabaumga dans le forum Développement
    Réponses: 8
    Dernier message: 30/04/2010, 16h25
  3. Requête de création de table avec UNION
    Par dut-dut dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 17/07/2008, 20h03
  4. Requête de création de table avec nouveau champs
    Par Lorenzogazier dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 09/06/2008, 15h00
  5. Réponses: 8
    Dernier message: 13/07/2007, 12h19

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