I am looking for a way to make the following select statement work. The problem is that I cannot use the field invno because I get the following error "is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause" Is there any other way to write this?

The first select state works fine. However, in this case I need to look at the first character of the invno to determine the company and that will then be the first part of getting the LEVEL.

The first select state works fine. However, in this case I need to look at the first character of the invno to determine the company and that will then be the first part of getting the LEVEL.

```
This works perfectly
select Specno + '-' + spcompany + ' / ' + Project + ' / ' + spcontact as Order1, Count(*) as OrderCount,
SUM(QtyShp) AS TotQty, Level=
CASE
WHEN SUM(QtyShp) < 250 THEN 'A'
WHEN SUM(QtyShp) < 500 THEN 'B'
WHEN SUM(QtyShp) < 1000 THEN 'C'
WHEN SUM(QtyShp) < 5000 THEN 'D'
WHEN SUM(QtyShp) < 10000 THEN 'E'
ELSE 'F'
END
From SBTInvoice
where salesmn = 'aparker'
Group by Specno + '-' + spcompany + ' / ' + Project + ' / ' + spcontact
This is the statement I want to work but it does not.
select Specno + '-' + spcompany + ' / ' + Project + ' / ' + spcontact as Order1, Count(*) as OrderCount,
SUM(QtyShp) AS TotQty, Level=
CASE
WHEN LEFT(invno,1) = '1' OR LEFT(invno,1) = '2' THEN
CASE
WHEN SUM(QtyShp) < 250 THEN 'A'
WHEN SUM(QtyShp) < 500 THEN 'B'
WHEN SUM(QtyShp) < 1000 THEN 'C'
WHEN SUM(QtyShp) < 5000 THEN 'D'
WHEN SUM(QtyShp) < 10000 THEN 'E'
ELSE 'F'
END
ELSE
CASE
WHEN SUM(QtyShp) < 25 THEN 'A'
WHEN SUM(QtyShp) < 50 THEN 'B'
WHEN SUM(QtyShp) < 100 THEN 'C'
WHEN SUM(QtyShp) < 500 THEN 'D'
WHEN SUM(QtyShp) < 1000 THEN 'E'
ELSE 'F'
END
END
From SBTInvoice
where salesmn = 'aparker'
Group by Specno + '-' + spcompany + ' / ' + Project + ' / ' + spcontact
```

Experts Exchange Solution brought to you by

Enjoy your complimentary solution view.

Get every solution instantly with Premium.
Start your 7-day free trial.

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trialWHEN (LEFT(invno,1) IN ('1','2') AND SUM(QtyShp) < 250)

OR (LEFT(invno,1) > '2' AND SUM(QtyShp) < 25) THEN 'A'

WHEN (LEFT(invno,1) IN ('1','2') AND SUM(QtyShp) < 500)

OR (LEFT(invno,1) > '2' AND SUM(QtyShp) < 50) THEN 'B'

WHEN (LEFT(invno,1) IN ('1','2') AND SUM(QtyShp) < 1000)

OR (LEFT(invno,1) > '2' AND SUM(QtyShp) < 100) THEN 'C'

WHEN (LEFT(invno,1) IN ('1','2') AND SUM(QtyShp) < 5000)

OR (LEFT(invno,1) > '2' AND SUM(QtyShp) < 500) THEN 'D'

WHEN (LEFT(invno,1) IN ('1','2') AND SUM(QtyShp) < 10000)

OR (LEFT(invno,1) > '2' AND SUM(QtyShp) < 1000) THEN 'E'

ELSE 'F'

END

.NET Programming

From novice to tech pro — start learning today.

Experts Exchange Solution brought to you by

Enjoy your complimentary solution view.

Get every solution instantly with Premium.
Start your 7-day free trial.

Open in new window