Gustav Brock
Gustav at cactus.dk
Tue Dec 9 03:53:15 CST 2008
Hi Chester Count() counts records. If no records, no Count(), thus Count = 0 is only possible for counting records of a subquery or with a Left Join to a child table: SELECT tblParent.ID, Count(tblChild.ID) AS CountOfChilds FROM tblParent LEFT JOIN tblChild ON tblParent.ID = tblChild.FK GROUP BY tblParent.ID; Note that the common method, Count(*), wouldn't work here as that will count rows of the _parent_ table. Here is how to do. Note the use of INT() to provide a numeric output; if omitted, a string will be returned: SELECT tblParent.ID, INT(IIf(Count([tblChild]![ID])=0,Null,Count([tblChild]![ID]))) AS Childs FROM tblParent LEFT JOIN tblChild ON tblParent.ID = tblChild.FK GROUP BY tblParent.ID; /gustav >>> Chester_Kaup at kindermorgan.com 08-12-2008 22:44 >>> What I am trying to do is do a count on the field status for each value it can contain for all the records in a table. If a count of the field returns zero I want to see NULL. If it returns any other value I want to see the actual value. Hope that makes sense. Here is whole SQL string SELECT IIf([Stat_Code]="RP","RL",IIf([Stat_Code]="SP","SL", [Stat_Code])) AS Status, [tbl Status Codes Active].Stat_Desc, DateSerial(Year(Date()),Month(Date()),1)-1 AS StatusDate1, IIf(Count([Status])=0,Null,Count([Status])) AS StatusCount, [tbl Status Codes Active].Area, [tbl Status Codes Active].UI, [tbl Status Codes Active].SortOrderSummary FROM [qry Well Status 1 Month Prior with Area] RIGHT JOIN [tbl Status Codes Active] ON ([qry Well Status 1 Month Prior with Area].Status = [tbl Status Codes Active].Stat_Code) AND ([qry Well Status 1 Month Prior with Area].Area = [tbl Status Codes Active].Area) GROUP BY IIf([Stat_Code]="RP","RL",IIf([Stat_Code]="SP","SL",[Stat_Code])), [tbl Status Codes Active].Stat_Desc, DateSerial(Year(Date()),Month(Date()),1)-1, [tbl Status Codes Active].Area, [tbl Status Codes Active].UI, [tbl Status Codes Active].SortOrderSummary;