Bonjour,
j'ai commencé la lecture du livre Training Kit MSSQL2012.
Je bloque dès le début... page 21.
L'exercice propose d'étudier la requête suivante:
SELECT custid, orderid FROM Sales.Orders GROUP BY custid;
Cette dernière n'aboutit pas et renvoie le message suivant:
La colonne 'Sales.Orders.orderid' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
La table est définie comme ceci:
Voici la correction:
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 CREATE TABLE [Sales].[Orders]( [orderid] [int] IDENTITY(1,1) NOT NULL, [custid] [int] NULL, [empid] [int] NOT NULL, [orderdate] [datetime] NOT NULL, [requireddate] [datetime] NOT NULL, [shippeddate] [datetime] NULL, [shipperid] [int] NOT NULL, [freight] [money] NOT NULL, [shipname] [nvarchar](40) NOT NULL, [shipaddress] [nvarchar](60) NOT NULL, [shipcity] [nvarchar](15) NOT NULL, [shipregion] [nvarchar](15) NULL, [shippostalcode] [nvarchar](10) NULL, [shipcountry] [nvarchar](15) NOT NULL, CONSTRAINT [PK_Orders] PRIMARY KEY CLUSTERED
SELECT custid, MAX(orderid) AS maxorderid FROM Sales.Orders GROUP BY custid;
Je ne comprends pas en quoi la correction correspond au besoin initial.
Dans cette correction, on ne récupère que les "orderid max" par client et non pas tous les orderid par client...
Comment aurait-on pu récupérer tous les orderid pour chaque client?
J'ai essayé SELECT custid, orderid FROM Sales.Orders GROUP BY custid,orderid; mais ça ne s'affiche pas comme j'aimerais...
N'hésitez pas à demander des précisions si je ne suis pas clair.
Je vous remercie d'avance pour votre aide.
Partager