Need to know yes or no from looking at lots of records with yes or no answers.

I am working on a production report.  I need to know if a assembly has been fully issued to based on the issued state of each part.
I think the info will help to explain.

If we look at assemblyseq 0 it is easy to see it is not issued to because all the issued data is no and on assemblyseq 1 they are all yes, but assemblyseq 2 has  2 yes and 1 no.  Results I am looking for would be like this,

If they are not all yes I want it to return a no, would be nice as it check the query or table which ever is easiest that it would create  or import the results into a new table.

Who is Participating?

Improve company productivity with a Business Account.Sign Up

Dale FyeConnect With a Mentor Commented:
I think you are looking for a query that looks something like:

Select Field1, Field2, Field3, iif(Count([Field4]) = Sum(iif(Field4 = "Yes", 1, 0)), "Yes", "No")
FROM yourTable
GROUP BY Field1, Field2, Field3

This will count the number of elements in each combination of field1, Field2, Field3, and will compare that number to the count of the number of [Field4] = "Yes".  If they are all "Yes", then it will return "Yes", otherwise, "No"
Darrell PorterEnterprise Business Process ArchitectCommented:
Edit the title of the post to read:
"Need to determine yes or no from looking at many records with yes or no answers."

Essentially this is a logical AND operation - all sub-assembly levels' status MUST be "yes" or the assembly is not complete, resulting in a "No" answer.

So you could simply write a where clause wherein status, or whatever the yes/no column is name, is "no".  The moment you hit a "no" value in that sub assembly, you can stop querying that sub assembly and go to the next one.

If, after iterating through all the sub assembly records for an assembly, you have not hit a "no" value, it means all of the sub assemblies for that assembly are set to yes and you can presume that assembly is complete.

If you need drill-down capabilities, that will be additional work.

I am, in fact, trying to lead you to the answer instead of writing it for you - it sounds like you somewhat know what you're doing and just need a bit of a hint.
fasseAuthor Commented:
That is what I get for typing in a hurry and not proof reading anything.  Question how do I edit a post?  Your thinking is correct that is the logic I was looking for.  I will see what I can do with it from there.
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

Antonio Salva RipollCommented:
Hi Fasse.

Please be patient if my English is not so good, as it's not my mother language.

Another way to get what you are looking for is creating a simple query.

You can count the items where iSSued = "No", Grouping By JobNum and AssemblySeq.

If the count is greater than 0, then the Assembly Seq uence is not completed.

If you only use group By JobNum, then you are checking all assemblies.

And, of course, you can use both queries and get all information.

You can use a recordset loaded from the queries and get the values.

Also, instead of using recordsets and queries, you can use domain aggregate functions; DCount will give you the values you need. If you need more help, I'll pleased in giving it.


SharathConnect With a Mentor Data EngineerCommented:
check this.
SELECT JobNum,AssemblySeq,
       IIF(MAX(Issued) = MIN(Issued), MAX(Issued), "No") AS IssuedColumn
  FROM your_table
 GROUP BY JobNum,AssemblySeq

Open in new window

fasseAuthor Commented:
Dale it looks like your solution is what I am looking for.  This is my statement.
SELECT tbl-target-jobs.[jobnum], tbl-target-jobs.[assemblyseq], tbl-target-jobs.[asm-partnum], iif(Count(tbl-target-jobs.[issued]) = Sum(iif(tbl-target-jobs.[issued] = "Yes", 1, 0)), "Yes", "No")
FROM 'tbl-target-jobs'
GROUP BY jobnum, assemblyseq, asm-partnum

I get the error incomplete query clause.
SharathData EngineerCommented:
Did you try my query?
Dale FyeCommented:
You had single quotes around the table name, that may have been your problem, so remove those and see if that works.  Otherwise, lets start with this:

SELECT tbl-target-jobs.[jobnum]
, tbl-target-jobs.[assemblyseq]
, tbl-target-jobs.[asm-partnum]
, Count(tbl-target-jobs.[issued]) as CountIssued
, Sum(iif(tbl-target-jobs.[issued] = "Yes", 1, 0)) as CountIssuedYes
FROM tbl-target-jobs
GROUP BY jobnum, assemblyseq, asm-partnum

Please confirm that the [Issued] column is text, and not boolean.  If it is boolean, they you will have to replace "Yes" in either of the previous queries with -1
fasseAuthor Commented:
Dale issued is text and boolean.

I get an syntx error in the from clause.

Also Sharath I get the same error with yours.  I am not very good at sql so I really have no idea what is wrong with it.
Dale FyeCommented:
Sorry, cannot be Text and Boolean

A text field would contain the values "Yes" or "No", with a text field, you would do a criteria that looks like:

WHERE [Included] = "Yes"
WHERE [Included] = "No"

A boolean field, when viewing the table in design view will have a data type of Yes/No.  With a boolean field, you can either say:

WHERE [Issued] = Yes
WHERE [Issued] = -1
WHERE [Issued] = No
WHERE [Issued] = 0

If you are getting an Error in the FROM clause, then you probably have misspelled the table name, but it might also be a result of using [Issued] = "Yes" instead of [Issued] = -1
fasseAuthor Commented:
Sorry my head is not working right.  It is a text field not a boolean field.  I am sorry
fasseAuthor Commented:
The misspelling on the table  gave me a hint.  It does not like the - in the table name.  I removed it and it worked.
Dale FyeCommented:
"it worked"

Which query worked, the first one, or the second one?
fasseAuthor Commented:
SELECT tbltargetjobs.jobnum, tbltargetjobs.assemblyseq, tbltargetjobs.asmpartnum, Count(tbltargetjobs.issued) AS CountIssued, Sum(IIf(tbltargetjobs.[issued]="Yes",1,0)) AS CountIssuedYes
FROM tbltargetjobs
GROUP BY tbltargetjobs.jobnum, tbltargetjobs.assemblyseq, tbltargetjobs.asmpartnum;
Dale FyeCommented:
so, have you tried the first one?
SharathData EngineerCommented:
Can you post the error message with my query?
fasseAuthor Commented:
The name of the table was what was causing issues on both Sharath and Dale's statements.  Once change both original suggestions worked perfectly.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.