I understand that. It was a typo that caused me to find this.
So, ignoring my typo and looking at the example, I can group by fields that are not in my select. It seems like it should give an error so I was asking if there was a valid reason why someone would ever do it.
SELECT CDTLMT, COUNT(*)
FROM QIWS/QCUSTCDT
GROUP BY CDTLMT, BALDUE
ORDER BY CDTLMT
This is the result set.
CDTLMT COUNT ( * )
200 1
400 1
400 1
700 1
700 1
700 1
1,000 1
5,000 1
5,000 1
9,999 1
9,999 1
9,999 1
-----Original Message-----
From: Juan Concepcion <Juan.Concepcion@xxxxxxxxxxxxx>
Sent: Wednesday, June 22, 2022 8:39 AM
To: Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxxxxxxxx>
Cc: smith5646midrange@xxxxxxxxx
Subject: RE: SQL select vs group by
If you use no comma between CDTLMT and BALDUE as follow:
SELECT CDTLMT BALDUE, COUNT(*)
FROM QIWS/QCUSTCDT
GROUP BY CDTLMT, BALDUE
ORDER BY CDTLMT
Then BALDUE will be considered an Alias of CDTLMT.
Juan Concepcion | CU*Answers | Applications Programmer
-----Original Message-----
From: MIDRANGE-L <midrange-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of smith5646midrange@xxxxxxxxx
Sent: Thursday, June 16, 2022 6:07 PM
To: 'Midrange Systems Technical Discussion' <midrange-l@xxxxxxxxxxxxxxxxxx>
Subject: RE: SQL select vs group by
WARNING: EXTERNAL EMAIL. Do NOT CLICK on links or open attachments unless you are expecting it or have verified with the sender.
Someone asked me to post a real example so I am using QCUSTCDT so everyone can look at it.
This is a clean example.
SELECT CDTLMT, COUNT(*)
FROM QIWS/QCUSTCDT
GROUP BY CDTLMT, BALDUE
ORDER BY CDTLMT
This is the result set.
CDTLMT COUNT ( * )
200 1
400 1
400 1
700 1
700 1
700 1
1,000 1
5,000 1
5,000 1
9,999 1
9,999 1
9,999 1
How I found this would be an SQL like this. Note that there is not a comma between CDTLMT and BALDUE in the SELECT line but there should have been.
SELECT CDTLMT BALDUE, COUNT(*)
FROM QIWS/QCUSTCDT
GROUP BY CDTLMT, BALDUE
ORDER BY CDTLMT
This works the same way in MYSQL so obviously it is not an IBM SQL bug.
From: smith5646midrange@xxxxxxxxx <smith5646midrange@xxxxxxxxx>
Sent: Thursday, June 16, 2022 11:57 AM
To: 'Midrange Systems Technical Discussion' <midrange-l@xxxxxxxxxxxxxxxxxx>
Subject: RE: SQL select vs group by
Apologies everyone, I had that backward.
Select field1, count(*)
From file 1
Group by field1, field2
You get field1 listed multiple times with different counts.
From: smith5646midrange@xxxxxxxxx <mailto:smith5646midrange@xxxxxxxxx> <smith5646midrange@xxxxxxxxx <mailto:smith5646midrange@xxxxxxxxx> >
Sent: Thursday, June 16, 2022 8:25 AM
To: 'Midrange Systems Technical Discussion' <midrange-l@xxxxxxxxxxxxxxxxxx <mailto:midrange-l@xxxxxxxxxxxxxxxxxx> >
Subject: SQL select vs group by
I found something interesting the other day. You can have fields in your group by clause that are not in the select clause.
Select field1, count(*)
From file1
Group by field1, field2
This gives a really weird looking results set and so I and was wondering if anyone could give me a reason that you would do something like this.
Full disclosure…how I found this was that I missed a comma in my select statement. 😊
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit:
https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.
Help support midrange.com by shopping at amazon.com with our affiliate link:
https://amazon.midrange.com
As an Amazon Associate we earn from qualifying purchases.