Q
Problem solve Get help with specific problems with your technologies, process and projects.

Only one distinct value in a group

I want to select rows from a table where ALL the values for a column are the same. For example, these two tables:

```T1            T2
Num Let       Num Val
1   A         1   R
2   A         2   R
3   C         3   S
4   C         3   S
5   D         3   -
6   A         4   S
7   A         4   S
8   A         5   R```

I want a query that will return all Num where T1.Num = T2.Num and ALL values for T2.Val are 'S'. The query should return:

```Num
-----
4```

The reason 3 is not returned is because at least one T2.Val is NOT an 'S'. Thanks if you can answer this.

Seems pretty straightforward. Try this:

```select T2.Num
from T1
inner
join T2
on T1.Num = T2.Num
group
by T2.Num
having count(distinct T2.Val) = 1
and min(T2.Val) = 'S'```

Since each row of T1 can join to more than one row of T2, a GROUP BY on T2.Num is required. The HAVING clause ensures that any T2.num is returned only when there's exactly one distinct T2.Val value in its group, and this value is 'S'. The MIN function is used, but it could also have been MAX, since there would be only one distinct value.

Note that a WHERE clause to restrict T2 rows to those containing 'S' would be wrong, unless accompanied by a NOT EXISTS correlated subquery to check for any other rows with any other value besides 'S' -- but this would be needlessly complex, so I won't show it.

UPDATE: Reader B. Humphreys emailed me with a concern about the solution above:

My understanding was that "Count(FieldName)" returned a count of NON-NULL values for the captioned field while "Count(*)" returned a count of all records (NULL or not).

If that's the case, will this actually work properly or will it return TRUE even though the field "T2.Val" contains NULLs in addition to one other non-NULL value?

An excellent observation. One way around this is to replace any NULLS with an empty string, and if there are only NULLs, then the MIN() condition would not be 'S':

```select
...
having count(distinct coalesce(T2.Val,'')) = 1
and min(T2.Val) = 'S'```

Mr. Humphreys suggested:

```select
...
having count(T2.Val) = count(*)
and min(T2.Val) = 'S'
and max(T2.Val) = 'S'```

This works perfectly, even in Microsoft Access (which does not support COUNT DISTINCT, at least not in the version I'm using). Thanks, B. Humphreys!

Start the conversation

Send me notifications when other members comment.

SearchDataManagement

• DataStax making Cassandra easier with Kubernetes Operators

New Kubernetes tool for the Apache Cassandra database is DataStax's attempt to create a broadly adopted approach for cloud native...

• Ascend boosts enterprise data governance with data lineage

The new capabilities of Ascend Govern bring data lineage and enterprise data governance as well as the ability to try and figure ...

• The business benefits of enterprise data governance and MDM

Data leaders from prominent large organizations provide insights into data governance best practices and benefits, at ...

• KNIME analytics platform adds tool to aid model deployment

Integrated Deployment, a new tool from KNIME aimed at bridging the gap between data model development and deployment, was ...

• Many employees still resist data-driven culture

While most employees see the benefits of data to drive decision-making, many still resist analytics, according to a report from ...

• SAS analytics platform benefiting from AI investment

Fueled by SAS' investment in AI and augmented intelligence features, the long-established vendor strengthened its BI platform ...

SearchSAP

• SAP S/4HANA migration: Critical advice for moving off ECC

With the end of SAP ECC support looming in 2027, organizations must make some tough decisions. Here's a look at your choices.

• How to pick a SuccessFactors implementation partner

Selecting the right SuccessFactors implementation partner is a critical step in the journey to deploying the system. Check out ...

• 6 critical steps of a successful SAP S/4HANA migration

A successful S/4HANA project starts with knowing why your organization should even make the move, then nailing down whether S/4 ...

SearchSQLServer

• SQL Server database design best practices and tips for DBAs

Good database design is a must to meet processing needs in SQL Server systems. In a webinar, consultant Koen Verbeeck offered ...

• SQL Server in Azure database choices and what they offer users

SQL Server databases can be moved to the Azure cloud in several different ways. Here's what you'll get from each of the options ...

• Using a LEFT OUTER JOIN vs. RIGHT OUTER JOIN in SQL

In this book excerpt, you'll learn LEFT OUTER JOIN vs. RIGHT OUTER JOIN techniques and find various examples for creating SQL ...

TheServerSide.com

• Developing a COVID-19 application? Design it the right way

Application developers with skills and an idea could design an app to combat the virus. Follow these insights to effectively ...

• How developers can volunteer during the COVID-19 pandemic

What resources can developers offer to go against COVID-19? Explore some promising developer volunteer and open source project ...

• 5 Jenkins alternatives for Java developers

In need of an alternative to Jenkins as part of a CI/CD environment? Consider options from Atlassian, GitLab, Spinnaker, ...

SearchDataCenter

• Tech giants aim supercomputers, clouds at finding a COVID-19 cure

The new COVID-19 HPC consortium comprised of tech giants, national labs and academia are using supercomputers and clouds to speed...

• Top vendor SDDC certification programs for admins

If you decide to grow your knowledge of software-defined data center technologies, VMware, Nuage Networks and Microsoft offer ...

• Build up your knowledge of leaf-spine network technology

As organizations deal with challenges of single tree path networks, many admins are considering leaf-spine architectures. Learn ...

SearchContentManagement

• Creating digital experiences key to driving exceptional CX

The way in which businesses build digital experiences is ever-evolving. It's a race to create easier-to-use customer interfaces ...

• Vendors offer free remote work technology for telecommuting

It's more than a marketing ploy: Cloud technology vendors, seeing their own issues enabling remote work, extend paid products to ...

• How businesses should deal with enterprise search issues

Enterprise search issues frequently complicate user experience with ECM systems. While users may face many problems, they also ...

SearchHRSoftware

• Best-case, worst-case pandemic scenarios for India service providers

India's IT and business support services will be tested during that country's pandemic lockdown. Many workers are now operating ...

• Farmers Insurance piloting human-like VR training

VR training has become a best practice at Farmers Insurance Exchange. Its claims adjusters are being exposed to more scenarios ...

• Virtual hiring, avoiding layoffs part of HR's pandemic response

In the face of a pandemic, many firms are trying to avoid layoffs and even hire. They are using virtual tools, including testing ...

Close