![]() |
SQL group by
Hejsan,
Nu börjar jag bli galen och behöver lite hjälp på traven! Jag får följande fel: Error Message: Column 'dbo.tblTypeOfCost.name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. med följande sql sats: SELECT dbo.tblTypeOfCost.name, dbo.tblOffer.amount, dbo.tblOffer.campaignID, dbo.tblOffer.offerID FROM dbo.tblOffer INNER JOIN dbo.tblTypeOfCost ON dbo.tblOffer.typOfCostID = dbo.tblTypeOfCost.typeOfCostID GROUP BY dbo.tblOffer.typOfCostID Har testat att ta bort name och lägga till typOfCostID i select men får det inte att fungera! Någon som kan se felet? Tack på förhand! |
SELECT dbo.tblTypeOfCost.name, dbo.tblOffer.amount, dbo.tblOffer.campaignID, dbo.tblOffer.offerID
FROM dbo.tblOffer INNER JOIN dbo.tblTypeOfCost ON dbo.tblOffer.typOfCostID = dbo.tblTypeOfCost.typeOfCostID GROUP BY dbo.tblOffer.typOfCostID, dbo.tblTypeOfCost.name, dbo.tblOffer.amount, dbo.tblOffer.campaignID, dbo.tblOffer.offerID Tyvärr kommer det nog inte ge det resultat du önskar... |
digiArt: Tack för ditt snabba svar men det gav inte det resultatet jag vela ha :)
Det jag vill är att kunna gruppera ihop så jag får summorna tillsammans och baserat på namnen t.ex. namn1 - 2000 (namn1 - 1000, namn1 - 1000) namn2 - 16000 (namn2 - 8000, namn2 - 8000) |
Kan du lägga ut CREATE statement så man kan skapa tabellerna själv, lite trött så jag orkar inte skapa tabellen manuellt...
|
Yeps här kommer dom :)
CREATE TABLE [dbo].[tblOffer]( [offerID] [int] IDENTITY(1,1) NOT NULL, [offerNO] [varchar](255) NULL, [supplierID] [int] NULL, [amount] [varchar](255) NULL, [typOfCostID] [int] NULL, [campaignID] [int] NULL, CONSTRAINT [PK_tblOffer] PRIMARY KEY CLUSTERED ( [offerID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] CREATE TABLE [dbo].[tblTypeOfCost]( [typeOfCostID] [int] IDENTITY(1,1) NOT NULL, [name] [varchar](255) NULL, CONSTRAINT [PK_tblTypeOfCost] PRIMARY KEY CLUSTERED ( [typeOfCostID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] |
Jag testkör på MySQL 5.1 i Ubuntu 9.10 men får syntaxfel på rad 1 (dvs "[dbo].[tblOffer](") ....
|
SELECT dbo.tblTypeOfCost.name, SUM(CAST(dbo.tblOffer.amount as int) )
FROM dbo.tblOffer INNER JOIN dbo.tblTypeOfCost ON dbo.tblOffer.typOfCostID = dbo.tblTypeOfCost.typeOfCostID GROUP BY dbo.tblOffer.typOfCostID, dbo.tblTypeOfCost.name Lagra din amount som decimal(28,6) eller liknande så slipper du köra en cast. |
Alla tider är GMT +2. Klockan är nu 06:56. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson