[Last Call] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 154
  • Last Modified:

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
0
Steynsk
Asked:
Steynsk
  • 6
  • 4
  • 2
  • +1
1 Solution
 
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
 
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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
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
 
reb73Commented:
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
 
SteynskAuthor Commented:
Yes you did it. My complements
0

Featured Post

NFR key for Veeam Agent for Linux

Veeam is happy to provide a free NFR license for one year.  It allows for the non‑production use and valid for five workstations and two servers. Veeam Agent for Linux is a simple backup tool for your Linux installations, both on‑premises and in the public cloud.

  • 6
  • 4
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now