Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

What does this error message mean?

Posted on 2010-11-30
7
Medium Priority
?
283 Views
Last Modified: 2012-05-10
Getting an outer reference error on a group by expression
Error.doc
0
Comment
Question by:SPLady
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
7 Comments
 
LVL 22

Expert Comment

by:8080_Diver
ID: 34239921
Please also attach the SQL statement.  (The SQL statement is truncated in the error message text. ;-)
0
 
LVL 1

Author Comment

by:SPLady
ID: 34240032
thank you @ 8080 Diver the code is attached
SELECT DISTINCT 
                      (DATEDIFF(DD, @start, @end) + 1) - (DATEDIFF(DD, DATEADD(DD, 6 - (DATEPART(DW, @start) + @@DATEFIRST - 2) % 7, @start), DATEADD(DD, 
                      - ((DATEPART(DW, @end) + @@DATEFIRST - 2) % 7), @end)) - 1) / 7 * 2 - CASE (DATEPART(DW, @start) + @@DATEFIRST - 2) 
                      % 7 + 1 WHEN 6 THEN 2 WHEN 7 THEN 1 ELSE 2 END - CASE (DATEPART(DW, @end) + @@DATEFIRST - 2) 
                      % 7 + 1 WHEN 6 THEN 1 WHEN 7 THEN 2 ELSE 0 END AS WorkingDays, vReportData.salesOrderLine, AVG(PlanJoin.[Plan]) AS Expr1, 
                      vReportData.EnergyOrg, vReportData.transyear, vReportData.subProduct, PlanJoin.recType, PlanJoin.Month, PlanJoin.Year, 
                      vReportData.lineValue AS Expr2, vReportData.transDate
FROM         vReportData INNER JOIN
                      PlanJoin ON vReportData.recType = PlanJoin.recType AND vReportData.EnergyOrg = PlanJoin.EnergyOrg AND 
                      vReportData.transyear = PlanJoin.Year AND MONTH(vReportData.transDate) = PlanJoin.Month
GROUP BY (DATEDIFF(DD, @start, @end) + 1) - (DATEDIFF(DD, DATEADD(DD, 6 - (DATEPART(DW, @start) + @@DATEFIRST - 2) % 7, @start), DATEADD(DD, 
                      - ((DATEPART(DW, @end) + @@DATEFIRST - 2) % 7), @end)) - 1) / 7 * 2 - CASE (DATEPART(DW, @start) + @@DATEFIRST - 2) 
                      % 7 + 1 WHEN 6 THEN 2 WHEN 7 THEN 1 ELSE 2 END - CASE (DATEPART(DW, @end) + @@DATEFIRST - 2) 
                      % 7 + 1 WHEN 6 THEN 1 WHEN 7 THEN 2 ELSE 0 END, vReportData.salesOrderLine, vReportData.EnergyOrg, vReportData.transyear, 
                      vReportData.subProduct, PlanJoin.recType, PlanJoin.Month, PlanJoin.Year, vReportData.lineValue, vReportData.transDate
HAVING      (vReportData.transDate > CONVERT(DATETIME, '2010-11-15 00:00:00', 102))

Open in new window

0
 
LVL 22

Accepted Solution

by:
8080_Diver earned 1000 total points
ID: 34240118
Frankly, I would be tempted to create a SELECT query that selects the data without the AVG (and just the PlanJoin.[Plan], instead) and then apply the AVG in an outer select so that the GROUP BY is a far simpler clause.
0
Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

 
LVL 1

Author Comment

by:SPLady
ID: 34243283
Thank you @8080 driver, can you show me an example of that query?
0
 
LVL 22

Expert Comment

by:8080_Diver
ID: 34243397
I think that thie following should work.  (Can't test it because I don't have the database. ;-)
SELECT  DISTINCT 
        WorkingDays
       ,salesOrderLine
       ,AVG(PlanJoin.[Plan]) AS AvgPlan
       ,EnergyOrg
       ,transyear
       ,subProduct
       ,recType
       ,Month
       ,Year
       ,lineValue
       ,transDate
FROM
(
 SELECT DATEDIFF(DD, @start, @end) + 1) - 
        (DATEDIFF(DD, DATEADD(DD, 6 - (DATEPART(DW, @start) + 
         @@DATEFIRST - 2) % 7, @start), 
         DATEADD(DD, - ((DATEPART(DW, @end) + @@DATEFIRST - 2) % 7), @end)) - 1) / 7 * 2 -
         CASE (DATEPART(DW, @start) + @@DATEFIRST - 2) % 7 + 1 
              WHEN 7
              THEN 1
              ELSE 2
         END -
         CASE (DATEPART(DW, @end) + @@DATEFIRST - 2) % 7 + 1 WHEN 6
              THEN 1                                       WHEN 7
              THEN 2
              ELSE 0
         END AS WorkingDays,
       vReportData.salesOrderLine,
       PlanJoin.[Plan],
       vReportData.EnergyOrg,
       vReportData.transyear,
       vReportData.subProduct,
       PlanJoin.recType,
       PlanJoin.Month,
       PlanJoin.Year,
       vReportData.lineValue,
       vReportData.transDate
FROM   vReportData
INNER JOIN PlanJoin
ON     vReportData.recType = PlanJoin.recType
       AND vReportData.EnergyOrg = PlanJoin.EnergyOrg
       AND vReportData.transyear = PlanJoin.Year
       AND MONTH(vReportData.transDate) = PlanJoin.Month
WHERE vReportData.transDate > '2010-11-15 00:00:00'
) Z
GROUP BY WorkingDays,
       salesOrderLine,
       EnergyOrg,
       transyear,
       subProduct,
       recType,
       Month,
       Year,
       lineValue,
       transDate;

Open in new window

0
 
LVL 1

Author Comment

by:SPLady
ID: 34243522
what is an outer reference?
0
 
LVL 22

Assisted Solution

by:8080_Diver
8080_Diver earned 1000 total points
ID: 34243941
I am pretty sure that it has something to do with the case statement in you GROUP BY clause.
0

Featured Post

How Blockchain Is Impacting Every Industry

Blockchain expert Alex Tapscott talks to Acronis VP Frank Jablonski about this revolutionary technology and how it's making inroads into other industries and facets of everyday life.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

There are some very powerful Dynamic Management Views (DMV's) introduced with SQL 2005. The two in particular that we are going to discuss are sys.dm_db_index_usage_stats and sys.dm_db_index_operational_stats.   Recently, I was involved in a di…
In this article we will get to know that how can we recover deleted data if it happens accidently. We really can recover deleted rows if we know the time when data is deleted by using the transaction log.
In this video, Percona Director of Solution Engineering Jon Tobin discusses the function and features of Percona Server for MongoDB. How Percona can help Percona can help you determine if Percona Server for MongoDB is the right solution for …
In response to a need for security and privacy, and to continue fostering an environment members can turn to for support, solutions, and education, Experts Exchange has created anonymous question capabilities. This new feature is available to our Pr…

688 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question