WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   SQL group by (https://www.wn.se/forum/showthread.php?t=1041415)

qm-alexander 2010-04-08 22:20

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!

digiArt 2010-04-08 22:26

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...

qm-alexander 2010-04-08 22:41

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)

Conny Westh 2010-04-08 23:37

Kan du lägga ut CREATE statement så man kan skapa tabellerna själv, lite trött så jag orkar inte skapa tabellen manuellt...

qm-alexander 2010-04-08 23:59

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]

Conny Westh 2010-04-09 01:04

Jag testkör på MySQL 5.1 i Ubuntu 9.10 men får syntaxfel på rad 1 (dvs "[dbo].[tblOffer](") ....

digiArt 2010-04-09 06:43

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