Need some help with my MSSQL query problem

Hi Experts,

I've got this small MSSQL(2005) question.
query 1 runs and produces three record lines.
But query 2 does not run.
Error:
Msg 8120, Level 16, State 1, Line 1
Column 'bed2_verpleegafdelingen.VAfdelingsID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Msg 207, Level 16, State 1, Line 4
Invalid column name 'bed2_opgaven.SpoedAFD'.
Msg 207, Level 16, State 1, Line 5
Invalid column name 'bed2_opgaven.SpoedCSO'.


 I've added a jpg that shows the wanted result please help me acheving the result.
Query 1
 
SELECT bed2_verpleegafdelingen.VAfdelingsID, bed2_verpleegafdelingen.Vafdelingscode, bed2_verpleegafdelingen.specialismen, bed2_verpleegafdelingen.bedmax, bed2_opgaven.Belegd, bed2_opgaven.Gerserveerd, bed2_opgaven.SpoedAFD, bed2_opgaven.SpoedCSO, bed2_aftelling.AfSpoedAfd, bed2_aftelling.AFSpoedCSO
FROM bed2_verpleegafdelingen INNER JOIN (bed2_aftelling INNER JOIN bed2_opgaven ON bed2_aftelling.vafdelingID = bed2_opgaven.VAfdelingsID) ON (bed2_opgaven.VAfdelingsID = bed2_verpleegafdelingen.VAfdelingsID) AND (bed2_verpleegafdelingen.VAfdelingsID = bed2_aftelling.vafdelingID);
 
query 2:
 
SELECT bed2_verpleegafdelingen.VAfdelingsID, bed2_verpleegafdelingen.Vafdelingscode, 
bed2_verpleegafdelingen.specialismen, bed2_verpleegafdelingen.bedmax,
bed2_opgaven.Belegd, bed2_opgaven.Gerserveerd, 
SUM(bed2_aftelling.AfSpoedAfd) + '/' + [bed2_opgaven.SpoedAFD] AS TotSpoedAfd,
SUM(bed2_aftelling.AfSpoedCSO) + '/' + [bed2_opgaven.SpoedCSO] AS TotSpoedCSO
FROM bed2_verpleegafdelingen 
INNER JOIN (bed2_aftelling 
INNER JOIN bed2_opgaven 
ON bed2_aftelling.vafdelingID = bed2_opgaven.VAfdelingsID) 
ON (bed2_opgaven.VAfdelingsID = bed2_verpleegafdelingen.VAfdelingsID) 
AND (bed2_verpleegafdelingen.VAfdelingsID = bed2_aftelling.vafdelingID)

Open in new window

EE.JPG
LVL 1
SteynskAsked:
Who is Participating?
 
reb73Connect With a Mentor Commented:
How about this -
SELECT   DISTINCT
         BV.VAfdelingsID
        ,BV.Vafdelingscode
        ,BV.specialismen
        ,BV.bedmax
        ,BO.Belegd
        ,BO.Gerserveerd
        ,BA.TotSpoedAfd + '/' + BO.SpoedAFD AS TotSpoedAfd
        ,BA.TotSpoedCSO + '/' + BO.SpoedCSO AS TotSpoedCSO
FROM
	bed2_verpleegafdelingen BV
INNER JOIN 
	(SELECT DISTINCT VAfdelingsID, Belegd, Gerserveerd, CAST(SpoedAFD AS VARCHAR(10)) AS SpoedAFD, CAST(SpoedCSO AS VARCHAR(10)) AS SpoedCSO
	 FROM bed2_opgaven
	)
	BO ON BO.VAfdelingsID = BV.VAfdelingsID
INNER JOIN 
	(SELECT vafdelingID, CAST(SUM(AfSpoedAfd) AS VARCHAR(10)) AS TotSpoedAfd, CAST(SUM(AfSpoedCSO) AS VARCHAR(10)) AS TotSpoedCSO
	 FROM bed2_aftelling 
	 GROUP BY vafdelingID
	)
	BA ON BV.VAfdelingsID = BA.vafdelingID

Open in new window

0
 
Pratima PharandeCommented:
try this
SELECT bed2_verpleegafdelingen.VAfdelingsID, bed2_verpleegafdelingen.Vafdelingscode, 
bed2_verpleegafdelingen.specialismen, bed2_verpleegafdelingen.bedmax,
bed2_opgaven.Belegd, bed2_opgaven.Gerserveerd, 
SUM(bed2_aftelling.AfSpoedAfd) + '/' + [bed2_opgaven.SpoedAFD] AS TotSpoedAfd,
SUM(bed2_aftelling.AfSpoedCSO) + '/' + [bed2_opgaven.SpoedCSO] AS TotSpoedCSO
FROM bed2_verpleegafdelingen 
INNER JOIN (bed2_aftelling 
INNER JOIN bed2_opgaven 
ON bed2_aftelling.vafdelingID = bed2_opgaven.VAfdelingsID) 
ON (bed2_opgaven.VAfdelingsID = bed2_verpleegafdelingen.VAfdelingsID) 
AND (bed2_verpleegafdelingen.VAfdelingsID = bed2_aftelling.vafdelingID
Group by bed2_verpleegafdelingen.VAfdelingsID, bed2_verpleegafdelingen.Vafdelingscode, 
bed2_verpleegafdelingen.specialismen, bed2_verpleegafdelingen.bedmax,
bed2_opgaven.Belegd, bed2_opgaven.Gerserveerd

Open in new window

0
 
SteynskAuthor Commented:
Hi Pratima MCS,

I've got this error:

Msg 156, Level 15, State 1, Line 12
Incorrect syntax near the keyword 'Group'.
0
Cloud Class® Course: CompTIA Healthcare IT Tech

This course will help prep you to earn the CompTIA Healthcare IT Technician certification showing that you have the knowledge and skills needed to succeed in installing, managing, and troubleshooting IT systems in medical and clinical settings.

 
Pratima PharandeCommented:

SELECT bed2_verpleegafdelingen.VAfdelingsID, bed2_verpleegafdelingen.Vafdelingscode, 
bed2_verpleegafdelingen.specialismen, bed2_verpleegafdelingen.bedmax,
bed2_opgaven.Belegd, bed2_opgaven.Gerserveerd, 
SUM(bed2_aftelling.AfSpoedAfd) + '/' + [bed2_opgaven.SpoedAFD] AS TotSpoedAfd,
SUM(bed2_aftelling.AfSpoedCSO) + '/' + [bed2_opgaven.SpoedCSO] AS TotSpoedCSO
FROM bed2_verpleegafdelingen 
INNER JOIN (bed2_aftelling 
INNER JOIN bed2_opgaven 
ON bed2_aftelling.vafdelingID = bed2_opgaven.VAfdelingsID) 
ON (bed2_opgaven.VAfdelingsID = bed2_verpleegafdelingen.VAfdelingsID) 
AND (bed2_verpleegafdelingen.VAfdelingsID = bed2_aftelling.vafdelingID)
Group by bed2_verpleegafdelingen.VAfdelingsID, bed2_verpleegafdelingen.Vafdelingscode, 
bed2_verpleegafdelingen.specialismen, bed2_verpleegafdelingen.bedmax,
bed2_opgaven.Belegd, bed2_opgaven.Gerserveerd

Open in new window

0
 
momi_sabagCommented:
SELECT bed2_verpleegafdelingen.VAfdelingsID, bed2_verpleegafdelingen.Vafdelingscode,
bed2_verpleegafdelingen.specialismen, bed2_verpleegafdelingen.bedmax,
bed2_opgaven.Belegd, bed2_opgaven.Gerserveerd,
SUM(bed2_aftelling.AfSpoedAfd) + '/' + [bed2_opgaven.SpoedAFD] AS TotSpoedAfd,
SUM(bed2_aftelling.AfSpoedCSO) + '/' + [bed2_opgaven.SpoedCSO] AS TotSpoedCSO
FROM bed2_verpleegafdelingen
INNER JOIN (bed2_aftelling
INNER JOIN bed2_opgaven
ON bed2_aftelling.vafdelingID = bed2_opgaven.VAfdelingsID)
ON (bed2_opgaven.VAfdelingsID = bed2_verpleegafdelingen.VAfdelingsID)
AND (bed2_verpleegafdelingen.VAfdelingsID = bed2_aftelling.vafdelingID)
 
group by bed2_verpleegafdelingen.VAfdelingsID, bed2_verpleegafdelingen.Vafdelingscode,
bed2_verpleegafdelingen.specialismen, bed2_verpleegafdelingen.bedmax,
bed2_opgaven.Belegd, bed2_opgaven.Gerserveerd
0
 
SteynskAuthor Commented:
again an error telling:
Msg 207, Level 16, State 1, Line 4
Invalid column name 'bed2_opgaven.SpoedAFD'.
Msg 207, Level 16, State 1, Line 5
Invalid column name 'bed2_opgaven.SpoedCSO'.

Strange. Would adding "CAST   .......  AS as Varchar"   help?
0
 
momi_sabagCommented:
no
if it was a data type problem you would have received a different message
this message indicates that you may got the column name wrong
are you sure such a column exists in that table?
0
 
SteynskAuthor Commented:
This is the create sql from the table:

CREATE TABLE [dbo].[bed2_opgaven](
      [OpgaveID] [int] NOT NULL,
      [VAfdelingsID] [int] NULL,
      [Belegd] [int] NULL,
      [Gerserveerd] [int] NULL,
      [SpoedAFD] [int] NULL,
      [SpoedCSO] [int] NULL,
      [aktief] [bit] NOT NULL
) ON [PRIMARY]
0
 
momi_sabagCommented:
try to cast the sum result to varchar
0
 
momi_sabagCommented:
and also the columns you mentioned which are int
0
 
SteynskAuthor Commented:
can you please explain?
the code below  results in the same error:

SELECT bed2_verpleegafdelingen.VAfdelingsID, bed2_verpleegafdelingen.Vafdelingscode,
bed2_verpleegafdelingen.specialismen, bed2_verpleegafdelingen.bedmax,
bed2_opgaven.Belegd, bed2_opgaven.Gerserveerd,
CAST(SUM(bed2_aftelling.AfSpoedAfd)as Varchar) + '/' + [bed2_opgaven.SpoedAFD] AS TotSpoedAfd,
CAST(SUM(bed2_aftelling.AfSpoedCSO)as Varchar) + '/' + [bed2_opgaven.SpoedCSO] AS TotSpoedCSO
FROM bed2_verpleegafdelingen
INNER JOIN (bed2_aftelling
INNER JOIN bed2_opgaven
ON bed2_aftelling.vafdelingID = bed2_opgaven.VAfdelingsID)
ON (bed2_opgaven.VAfdelingsID = bed2_verpleegafdelingen.VAfdelingsID)
AND (bed2_verpleegafdelingen.VAfdelingsID = bed2_aftelling.vafdelingID)
Group by bed2_verpleegafdelingen.VAfdelingsID, bed2_verpleegafdelingen.Vafdelingscode,
bed2_verpleegafdelingen.specialismen, bed2_verpleegafdelingen.bedmax,
bed2_opgaven.Belegd, bed2_opgaven.Gerserveerd
0
 
reb73Commented:
Try this -

You were mixing up an aggregated column (with SUM keyword) with a non-aggregated column, in cases like these it is better to arbitrarily promote the non-aggregated column to be an aggregated column using MIN/MAX function -
SELECT
	 bed2_verpleegafdelingen.VAfdelingsID
	,bed2_verpleegafdelingen.Vafdelingscode
	,bed2_verpleegafdelingen.specialismen
	,bed2_verpleegafdelingen.bedmax
	,bed2_opgaven.Belegd
	,bed2_opgaven.Gerserveerd
	,CAST(SUM(bed2_aftelling.AfSpoedAfd)as Varchar) + '/' + MAX([bed2_opgaven.SpoedAFD]) AS TotSpoedAfd
	,CAST(SUM(bed2_aftelling.AfSpoedCSO)as Varchar) + '/' + MAX([bed2_opgaven.SpoedCSO]) AS TotSpoedCSO
FROM bed2_verpleegafdelingen
INNER JOIN bed2_aftelling ON bed2_verpleegafdelingen.VAfdelingsID = bed2_aftelling.vafdelingID
INNER JOIN bed2_opgaven ON bed2_aftelling.vafdelingID = bed2_opgaven.VAfdelingsID AND bed2_opgaven.VAfdelingsID = bed2_verpleegafdelingen.VAfdelingsID
GROUP BY
	 bed2_verpleegafdelingen.VAfdelingsID
	,bed2_verpleegafdelingen.Vafdelingscode
	,bed2_verpleegafdelingen.specialismen
	,bed2_verpleegafdelingen.bedmax
	,bed2_opgaven.Belegd, bed2_opgaven.Gerserveerd

Open in new window

0
 
SteynskAuthor Commented:
No this return the same result. This by the way is the complete create script:


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[bed2_aftelling]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[bed2_aftelling](
      [AftellingsID] [int] NOT NULL,
      [vafdelingID] [int] NULL,
      [AfSpoedAfd] [int] NULL,
      [AFSpoedCSO] [int] NULL,
      [opmerking] [nvarchar](max) NULL,
      [lastchange] [datetime] NULL,
      [door] [nvarchar](50) NULL,
      [gewensteafdID] [int] NULL,
      [aktief] [bit] NOT NULL
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[bed2_opgaven]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[bed2_opgaven](
      [OpgaveID] [int] NOT NULL,
      [VAfdelingsID] [int] NULL,
      [Belegd] [int] NULL,
      [Gerserveerd] [int] NULL,
      [SpoedAFD] [int] NULL,
      [SpoedCSO] [int] NULL,
      [aktief] [bit] NOT NULL
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[bed2_verpleegafdelingen]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[bed2_verpleegafdelingen](
      [VAfdelingsID] [int] NOT NULL,
      [Vafdelingscode] [nvarchar](50) NULL,
      [specialismen] [nvarchar](50) NULL,
      [bedmax] [int] NULL
) ON [PRIMARY]
END
0
 
SteynskAuthor Commented:
Yes you did it. My complements
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.