Your Query does not include the expression 'Open Amount' as part of an aggerate function - MS Access - sql

SELECT [doc type], [Open Amount]
, [customer number]
, COUNT([customer number]) As CountCustomerNumber
, SUM(IIF([Open Amount]>'0', [Open Amount], 0)) AS sum_open_amount_pos
, SUM(IIF([Open Amount]<'0', [Open Amount], 0)) As sum_open_amount_neg
FROM
(SELECT d.[customer number] & d.[membership number] AS CustMemb
, d.[customer number]
, agg.[Open Amount]
, agg.[doc type]
, SUM(agg.[Open Amount]) AS SumOpenAmount
FROM (SELECT [doc type]
, [customer number]
, SUM([Open Amount]) AS TotalSubOpenAmount
FROM data
WHERE [doc type] = 'RU'
GROUP BY [doc type]
, [customer number]
) agg
INNER JOIN [data] d
ON d.[customer number] = agg.[customer number]
GROUP BY d.[customer number] & d.[membership number]
, d.[customer number]
, agg.[doc type]
, agg.[Open Amount]
) AS sub
GROUP BY [doc type]
, [customer number]
, [Open Amount]
HAVING COUNT([customer number]) = 1
Added Open Amount to Group BY Clause - Looking for parameter value for agg.Open Amount -----------------------------------------

See the following stackoverflow post: “You tried to execute a query that does not include the specified aggregate function”. I think you just need to add [Open Amount] to the final GROUP BY
.
.
.
GROUP BY [doc type]
, [customer number]
, [Open Amount]
HAVING COUNT([customer number]) = 1
???

You have three elements in you select that are not part of any aggregation but only two elements in your group by, that is why you get the error message.
When you use aggregation function, all the non aggregated elements of the select need to be in the group by hence your query become like this :
EDIT : You are selecting [Open Amount] and aggregating SUM(agg.[Open Amount]) AS SumOpenAmount in your sub query.
You are also doing something similar in your external query
SELECT [doc type], [Open Amount]
, [customer number]
, COUNT([customer number]) As CountCustomerNumber
, SUM(IIF([Open Amount]>'0', [Open Amount], 0)) AS sum_open_amount_pos
, SUM(IIF([Open Amount]<'0', [Open Amount], 0)) As sum_open_amount_neg
FROM SubQueries
GROUP BY [doc type]
[Open Amount]
, [customer number]
HAVING COUNT([customer number]) = 1
Should be something like that :
SELECT [doc type]
, [customer number]
, COUNT([customer number]) As CountCustomerNumber
, SUM(IIF([Open Amount]>'0', [Open Amount], 0)) AS sum_open_amount_pos
, SUM(IIF([Open Amount]<'0', [Open Amount], 0)) As sum_open_amount_neg
FROM SubQueries
GROUP BY [doc type]
, [customer number]
HAVING COUNT([customer number]) = 1

When you sum over [Open Amount], you cannot also select each separate "Open Amount". So remove it from both "SELECT" and "GROUP BY":
SELECT [doc type] --, [Open Amount]
, [customer number]
--, COUNT([customer number]) As CountCustomerNumber
, SUM(IIF([Open Amount]>'0', [Open Amount], 0)) AS sum_open_amount_pos
, SUM(IIF([Open Amount]<'0', [Open Amount], 0)) As sum_open_amount_neg
FROM
-- snip
GROUP BY [doc type]
, [customer number]
-- , [Open Amount]
-- snip
And similarly, if you group by "Customer Number", a Count([Customer Number]) would return 1 (if it worked).

Related

How can I summarize a set of records into one line where only one record in a column has text and all others are null?

I have invoice data stored in a SQL database and I need a summary query to bring up the Invoice Number, PO number, Date, and Invoice Amount in a single line using an MS Access Query. Unfortunately, the customer PO number is only on one line of the invoice data and pops up on the query result like this.
Invoice Date
Invoice #
PO Number
Amount
8/11/22
12345
NULL
$23.00
8/11/22
12345
456
$00.00
I need the output to look like this instead:
Invoice Date
Invoice #
PO Number
Amount
8/11/22
12345
456
$23.00
My query looks like this:
SELECT
[Invoice Date],
[Invoice #],
[PO Number],
FORMAT$(Sum([Amount])),'$#,##0.00') AS [Amount]
FROM [Invoice Details]
GROUP BY
[Invoice Date],
[Invoice #],
[PO Number]
HAVING
[INVOICE DATE] BETWEEN [8/11/2022] AND [8/11/2022]
ORDER BY
[INVOICE #]
I am still a novice when it comes to SQL queries and am not sure what I am missing here. Any help is appreciated.
Then you can exclude [PO Number] column from your GROUP BY and just take the greater value in each group. I think you can use :
SELECT
[Invoice Date],
[Invoice #],
MAX(Nz([PO Number], 0)) AS [PO Number],
FORMAT$(Sum([Amount])),'$#,##0.00') AS [Amount]
FROM [Invoice Details]
GROUP BY
[Invoice Date],
[Invoice #],
HAVING
[INVOICE DATE] BETWEEN [8/11/2022] AND [8/11/2022]
ORDER BY
[INVOICE #]
Nz is replacing Null by 0 here.
You have very limited example input, but assuming TABLE1
This will work
SELECT Amounts.[Invoice Date], Amounts.[Invoice #], [PO Numbers].[PO Number], Amounts.Amount
FROM Table1 AS Amounts
INNER JOIN Table1 AS [PO Numbers]
ON (Amounts.[Invoice Date] = [PO Numbers].[Invoice Date]) AND (Amounts.[Invoice #] = [PO Numbers].[Invoice #])
WHERE ((([PO Numbers].[PO Number]) Is Not Null) AND ((Amounts.[PO Number]) Is Null));
Looks like this in the query window

Importing file returns Error 3134 - Syntax Error

This code was written in 2017 and has worked since - it is giving me a syntax error.
Its a lengthy invoice file we import monthly - finds the correct quarter to append the temp table to.
db.Execute "INSERT INTO" & varQuarter & " ([Ship Date], [Invoice Date], [Sell Price per Unit],
[Differential Amount]," _
& " [Net Product Amount], [Amount Due], [Product Sell Amount Due], [Discount Amount Due],
[Miscellaneous Amount Due]," _
& " [Storage Amount Due], [Overage Storage Amount Due], [Freight Amount Due], [Tax Amount Due],
[Memo Sell Amount]," _
& " [Memo Tax Amount], [Billing Unit Quantity], [Billing Unit Count], [Billing Unit Code], [Shipped
Quantity]," _
& " [Invoiced Quantity], [Invoice Source System], [Invoice Number], [Invoice Bill Code], [Order
Number], [Form Number]," _
& " [Form Name], [PO Number], [Requisition Number], [Billing Cost Center Number], [Using Cost Center
Number]," _
& " [Warehouse Number], [Bill Of Lading Number], [Bill Of Lading Item Number], [Ship Mark For Text],
[CCN Customer Name]," _
& " [CCN Customer Number], [Bill to Customer Name], [Bill to Customer Number], [Ship To Customer
Number]," _
& " [Ship To Customer Name], [Ship To Address Line1], [Ship To Address Line2], [Ship To City],
[Ship To State]," _
& " [Ship To Zip Code], [Plant Code], [Plant Name], [Product Code], [Product Name], [Postage Amount
Due]," _
& " [Freight Carrier Code], [Category Title])" _
& " SELECT [Ship Date], [Invoice Date], [Sell Price per Unit], [Differential Amount], [Net Product
Amount], [Amount Due]," _
& " [Product Sell Amount Due], [Discount Amount Due], [Miscellaneous Amount Due], [Storage Amount
Due]," _
& " [Overage Storage Amount Due], [Freight Amount Due], [Tax Amount Due], [Memo Sell Amount], [Memo
Tax Amount]," _
& " [Billing Unit Quantity], [Billing Unit Count], [Billing Unit Code], [Shipped Quantity], [Invoiced
Quantity]," _
& " [Invoice Source System], [Invoice Number], [Invoice Bill Code], [Order Number], [Form Number],
[Form Name], [PO Number]," _
& " [Requisition Number], [Billing Cost Center Number], [Using Cost Center Number], [Warehouse
Number], [Bill Of Lading Number]," _
& " [Bill Of Lading Item Number], [Ship Mark For Text], [CCN Customer Name], [CCN Customer Number],
[Bill to Customer Name]," _
& " [Bill to Customer Number], [Ship To Customer Number], [Ship To Customer Name], [Ship To Address
Line1]," _
& " [Ship To Address Line2], [Ship To City], [Ship To State], [Ship To Zip Code], [Plant Code],
[Plant Name], [Product Code]," _
& " [Product Name], [Freight Carrier Code], [Postage Amount Due], [Category Title]" _
& " FROM tblInvoicesTemp;"
Simply avoid VBA string queries requiring long concatenation, line breaks and quotes. Specifically, your issue appears to be the INSERT INTO" & VarQuarter & " which if the space is not the issue (i.e., StackOverflow post typo) it may be the actual value of VarQuarter. Should the table name maintain a space (like all your columns) or special character or leading number, it must be escaped either with square brackets or backticks.
However, avoid this long string building altogether by saving an Access stored query and preferably a single final invoice table. Doing so, you don't have to worry about line breaks or concatenation. Additionally, the Query Designer does not save SQL with syntax issues and the Access engine caches statistics for best execution plan on stored queries (hence why they run better than parsed SQL run on the fly in VBA). Should you need to pass VBA values in WHERE clauses, you can still use saved queries with parameters support.
SQL (save as Access stored query or one for each quarter table)
INSERT INTO [myFinalTable] ([Ship Date], [Invoice Date], [Sell Price per Unit],
[Differential Amount], [Net Product Amount], [Amount Due],
[Product Sell Amount Due], [Discount Amount Due],
[Miscellaneous Amount Due], [Storage Amount Due],
[Overage Storage Amount Due], [Freight Amount Due],
[Tax Amount Due], [Memo Sell Amount], [Memo Tax Amount],
[Billing Unit Quantity], [Billing Unit Count], [Billing Unit Code],
[Shipped Quantity], [Invoiced Quantity], [Invoice Source System],
[Invoice Number], [Invoice Bill Code], [Order Number], [Form Number],
[Form Name], [PO Number], [Requisition Number], [Billing Cost Center Number],
[Using Cost Center Number], [Warehouse Number], [Bill Of Lading Number],
[Bill Of Lading Item Number], [Ship Mark For Text], [CCN Customer Name],
[CCN Customer Number], [Bill to Customer Name], [Bill to Customer Number],
[Ship To Customer Number], [Ship To Customer Name], [Ship To Address Line1],
[Ship To Address Line2], [Ship To City], [Ship To State],
[Ship To Zip Code], [Plant Code], [Plant Name], [Product Code], [Product Name],
[Postage Amount Due], [Freight Carrier Code], [Category Title])
SELECT [Ship Date], [Invoice Date], [Sell Price per Unit], [Differential Amount]
, [Net Product Amount], [Amount Due], [Product Sell Amount Due], [Discount Amount Due]
, [Miscellaneous Amount Due], [Storage Amount Due], [Overage Storage Amount Due]
, [Freight Amount Due], [Tax Amount Due], [Memo Sell Amount], [Memo Tax Amount]
, [Billing Unit Quantity], [Billing Unit Count], [Billing Unit Code], [Shipped Quantity]
, [Invoiced Quantity], [Invoice Source System], [Invoice Number], [Invoice Bill Code]
, [Order Number], [Form Number], [Form Name], [PO Number], [Requisition Number]
, [Billing Cost Center Number], [Using Cost Center Number], [Warehouse Number]
, [Bill Of Lading Number], [Bill Of Lading Item Number], [Ship Mark For Text]
, [CCN Customer Name], [CCN Customer Number], [Bill to Customer Name]
, [Bill to Customer Number], [Ship To Customer Number], [Ship To Customer Name]
, [Ship To Address Line1], [Ship To Address Line2], [Ship To City]
, [Ship To State], [Ship To Zip Code], [Plant Code], [Plant Name], [Product Code]
, [Product Name], [Freight Carrier Code], [Postage Amount Due], [Category Title]
FROM tblInvoicesTemp;
VBA
DoCmd.OpenQuery "myAppendQuery" ' NO NEED TO CLOSE ACTION QUERIES
Now if you use many quarter tables, save a corresponding query for each one and dynamically assign the query name and pass variable value in OpenQuery call:
Dim VarQuarter
VarQuarter = ...
DoCmd.OpenQuery VarQuarter ' NO NEED TO CLOSE ACTION QUERIES
To avoid user update/insert warnings, use your earlier method of Database.Execute:
Dim VarQuarter
VarQuarter = ...
db.Execute VarQuarter

How to GroupBy based on GetDate() , CASE and fixed column aliases

I am trying to create an openAR file and I am stuck trying to group this data by Customer and Invoice. The file will get created daily.
[FILE DATE]
[CUSTOMER ID]
[INVOICE NUMBER]
[INVOICE TYPE]
[INVOICE DATE]
[OPEN INVOICE AMOUNT]
01/22/2021
00100000
INV1000
INV
06/08/2020
1000
01/22/2021
00100000
INV1001
INV
06/15/2020
50
01/22/2021
00100000
INV1002
INV
08/20/2020
50
01/22/2021
00100000
INV1005
CM
10/18/2020
-100
01/22/2021
00100000
PAY1000
PAY
06/15/2020
-750
01/22/2021
00100000
PAY1000
PAY
06/15/2020
820
I am trying to group this data as I need to Sum lines of the open invoice amounts per each invoice. The file will get exported automatically to another company to process the AR info. The column headers need to be exact as they are below. I usually use Aliases to group but with 2 word fixed Column headers, I am a bit stuck to figure out how to group this code. Also, how would you group GETDATE() and that CASE statement?
SELECT
CONVERT (nvarchar(30), GETDATE(), 101) as [FILE DATE],
GACC.BPR_0 as [CUSTOMER ID],
GACC.NUM_0 as [INVOICE NUMBER],
GACC.TYP_0 as [INVOICE TYPE],
Case
When GACC.TYP_0 in ('INV', 'CM') Then CONVERT (nvarchar(30), SI.BPRDAT_0 , 101)
Else CONVERT (nvarchar(30), PAY.ACCDAT_0 , 101)
End as [INVOICE DATE],
(GACC.AMOUNT_0 * GACC.SNS_0) as [OPEN INVOICE AMOUNT] --- want to SUM and group this column for each INV#
FROM dbo.GACCDUDATE as GACC
left join dbo.SINVOICE as SI --- Invoice Table
on GACC.NUM_0 = SIV.NUM_0
left join dbo.PAYMENT as PAY -- Payment Table
on PAY.NUM_0 = GACC.NUM_0
Thank you so much for helping me to group this for each customer, invoice, sum of open amount.
Edit - Desired output
[FILE DATE]
[CUSTOMER ID]
[INVOICE NUMBER]
[INVOICE TYPE]
[INVOICE DATE]
[OPEN INVOICE AMOUNT]
01/22/2021
00100000
INV1000
INV
06/08/2020
1000
01/22/2021
00100000
INV1001
INV
06/15/2020
50
01/22/2021
00100000
INV1002
INV
08/20/2020
50
01/22/2021
00100000
INV1005
CM
10/18/2020
-100
01/22/2021
00100000
PAY1000
PAY
06/15/2020
70
Using CTE to reference aliases. Alternatively, as in my comment just group on "CONVERT (nvarchar(30), GETDATE(), 101)" or "(GACC.AMOUNT_0 * GACC.SNS_0)"
With MyInvoices as
(
SELECT
CONVERT (nvarchar(30), GETDATE(), 101) as [FILE DATE],
GACC.BPR_0 as [CUSTOMER ID],
GACC.NUM_0 as [INVOICE NUMBER],
GACC.TYP_0 as [INVOICE TYPE],
Case
When GACC.TYP_0 in ('INV', 'CM') Then CONVERT (nvarchar(30), SI.BPRDAT_0 , 101)
Else CONVERT (nvarchar(30), PAY.ACCDAT_0 , 101)
End as [INVOICE DATE],
(GACC.AMOUNT_0 * GACC.SNS_0) as [OPEN INVOICE AMOUNT]
FROM dbo.GACCDUDATE as GACC
left join dbo.SINVOICE as SI
on GACC.NUM_0 = SIV.NUM_0
left join dbo.PAYMENT as PAY
on PAY.NUM_0 = GACC.NUM_0
)
select [FILE DATE], [CUSTOMER ID], [INVOICE NUMBER], [INVOICE TYPE],[INVOICE DATE],[OPEN INVOICE AMOUNT] from MyInvoices
group by [FILE DATE], [CUSTOMER ID], [INVOICE NUMBER], [INVOICE TYPE],[INVOICE DATE]

Aggregated sub query inside other aggregated query

I use Microsoft VBA together with Excel and also use the ADODB connection to treat the Sheet as database.
I have one issue regarding a SQL aggregated query that uses also aggregated sub queries. The issue is that I cannot use it like this, due to the fact it is throwing errors and I don't know how to change it
The SQL query:
Select inv.[Region], inv.[Org Name], inv.[Bill To Customer Number], inv.[Bill To Customer Name],
SUM(inv.[AR Global Total Amount]) as "Amount Invoiced",
COUNT(pay.[Sales Invoice Number]) as "Count Invoices",
SUM(inv.[AR Global Total Amount]*(inv.[Payment Due Fiscal Date]-inv.[Invoiced Fiscal Date])) as "Sum of Terms Mult",
SUM(inv.[AR Global Total Amount]*(pay.GL_Min-inv.[Invoiced Fiscal Date])) as "Sum of Pay Days Mult",
SUM(inv.[AR Global Total Amount]*(pay.GL_Min-inv.[Payment Due Fiscal Date])) as "Sum of Days Late Mult"
FROM
(
Select *
From [Data$] as inv
WHERE [AR Transaction Sub Type] IN ('Inv', 'Inv-T')
) a,
(
Select [Region], [Org Name], [Bill To Customer Number], [Bill To Customer Name], [Sales Invoice Number], Min([GL Fiscal Date]) as GL_Min
FROM [Data$] as pay
WHERE [AR Transaction Sub Type] IN ('Cash', 'Cash-T')
GROUP BY [Region], [Org Name], [Bill To Customer Number], [Bill To Customer Name], [Sales Invoice Number]
) t
WHERE inv.[Sales Invoice Number] = pay.[Sales Invoice Number] AND inv.[Org Name] = pay.[Org Name] AND inv.[AR Global Total Amount]>0
GROUP BY inv.[Region], inv.[Org Name], inv.[Bill To Customer Number], inv.[Bill To Customer Name]
ORDER BY SUM(inv.[AR Global Total Amount]) DESC
The problem is on the second sub query, the one where I try to capture the min date.
Could someone point me to a proper syntax?
Thanks!
Your query seems correct except subquery alias. Could you try this?
Select inv.[Region], inv.[Org Name], inv.[Bill To Customer Number], inv.[Bill To Customer Name],
SUM(inv.[AR Global Total Amount]) as "Amount Invoiced",
COUNT(pay.[Sales Invoice Number]) as "Count Invoices",
SUM(inv.[AR Global Total Amount]*(inv.[Payment Due Fiscal Date]-inv.[Invoiced Fiscal Date])) as "Sum of Terms Mult",
SUM(inv.[AR Global Total Amount]*(pay.GL_Min-inv.[Invoiced Fiscal Date])) as "Sum of Pay Days Mult",
SUM(inv.[AR Global Total Amount]*(pay.GL_Min-inv.[Payment Due Fiscal Date])) as "Sum of Days Late Mult"
FROM
(
Select *
From [Data$] as inv
WHERE [AR Transaction Sub Type] IN ('Inv', 'Inv-T')
) inv,
(
Select [Region], [Org Name], [Bill To Customer Number], [Bill To Customer Name], [Sales Invoice Number], Min([GL Fiscal Date]) as GL_Min
FROM [Data$] as pay
WHERE [AR Transaction Sub Type] IN ('Cash', 'Cash-T')
GROUP BY [Region], [Org Name], [Bill To Customer Number], [Bill To Customer Name], [Sales Invoice Number]
) pay
WHERE inv.[Sales Invoice Number] = pay.[Sales Invoice Number] AND inv.[Org Name] = pay.[Org Name] AND inv.[AR Global Total Amount]>0
GROUP BY inv.[Region], inv.[Org Name], inv.[Bill To Customer Number], inv.[Bill To Customer Name]
ORDER BY SUM(inv.[AR Global Total Amount]) DESC

Access 2007 Error 3071 -report using parameters

I have a query in MS Access 2007 that pulls data from two different tables and displays in a report. This occurs after a user clicks a button on the main form, which opens a date field parameter form where the user can select two dates. From there the query runs using the two dates the user provided, or the dates are 'faked' if none are selected to fill in the dates. I'm getting a Run-time error 3071, this expression is typed incorrectly, or it is too complex to be evaluated and i'm not sure why.
I run a similar query in another database and it executes perfectly so i'm at a loss.
Query is below,
(SELECT
[Group Name],
tbGroups AS [Group Number],
Analyst,
[Account Manager],
NULL AS [SER Number],
[Received Date] AS [Corporate Recevied],
DateValue(Created) AS [Sales Submitted],
tbBAAcceptedDate AS [BA Accepted],
NULL AS [Submitted to MDSS],
NULL AS [Completed],
NULL AS [Cancelled],
DateDiff("d",[Received Date], IIf([Forms]![frmReportDateFilter].[tbToDate] = '01/01/2116', Date(), CDate([Forms]![frmReportDateFilter].[tbToDate]))) AS [Aging Days Count],
LocalID AS [ID Number]
FROM ChangeRequest
WHERE DateValue([Created]) BETWEEN CDate([Forms]![frmReportDateFilter].[tbFromDate]) AND CDate([Forms]![frmReportDateFilter].[tbToDate]))
UNION ALL (SELECT
tbGroupProgramProductName AS [Group Name],
tbGroups AS [Group Number],
cboAnalyst AS Analyst,
tbAccountManager AS [Account Manager],
tbSERNumber AS [SER Number],
tbCorpReceivedDate AS [Corporate Recevied],
tbBAReceivedDate AS [Sales Submitted],
IIf([tbBAAcceptedDate] > CDate([Forms]![frmReportDateFilter].[tbToDate]), NULL, [tbBAAcceptedDate]) AS [BA Accepted],
IIf([tbSubmittedToMDSS] > CDate([Forms]![frmReportDateFilter].[tbToDate]), NULL, [tbSubmittedToMDSS]) AS [Submitted to MDSS],
DateValue(tbCompleteDate) AS [Completed],
DateValue(tbCancelDate) AS [Cancelled],
DateDiff("d",tbCorpReceivedDate, IIf([Forms]![frmReportDateFilter].[tbToDate] = '01/01/2116', Date(), CDate([Forms]![frmReportDateFilter].[tbToDate]))) AS [Aging Days Count],
LocalID AS [ID Number]
FROM tblDD
WHERE DateValue([tbBAReceivedDate]) BETWEEN CDate([Forms]![frmReportDateFilter].[tbFromDate]) AND CDate([Forms]![frmReportDateFilter].[tbToDate]))
ORDER BY [Group Name];
Any help is greatly appreciated.
Specify the control as Date. Something like this with no CDate - and no outer parenthesis:
PARAMETERS
[Forms]![frmReportDateFilter].[tbFromDate] Date,
[Forms]![frmReportDateFilter].[tbToDate] Date;
SELECT
[Group Name],
tbGroups AS [Group Number],
Analyst,
[Account Manager],
NULL AS [SER Number],
[Received Date] AS [Corporate Recevied],
DateValue(Created) AS [Sales Submitted],
tbBAAcceptedDate AS [BA Accepted],
NULL AS [Submitted to MDSS],
NULL AS [Completed],
NULL AS [Cancelled],
DateDiff("d",[Received Date], IIf([Forms]![frmReportDateFilter].[tbToDate] = #01/01/2116#, Date(), [Forms]![frmReportDateFilter].[tbToDate])) AS [Aging Days Count],
LocalID AS [ID Number]
FROM ChangeRequest
WHERE DateValue([Created]) BETWEEN [Forms]![frmReportDateFilter].[tbFromDate] AND [Forms]![frmReportDateFilter].[tbToDate]
UNION ALL
SELECT
tbGroupProgramProductName AS [Group Name],
tbGroups AS [Group Number],
cboAnalyst AS Analyst,
tbAccountManager AS [Account Manager],
tbSERNumber AS [SER Number],
tbCorpReceivedDate AS [Corporate Recevied],
tbBAReceivedDate AS [Sales Submitted],
IIf([tbBAAcceptedDate] > [Forms]![frmReportDateFilter].[tbToDate], NULL, [tbBAAcceptedDate]) AS [BA Accepted],
IIf([tbSubmittedToMDSS] > [Forms]![frmReportDateFilter].[tbToDate], NULL, [tbSubmittedToMDSS]) AS [Submitted to MDSS],
DateValue(tbCompleteDate) AS [Completed],
DateValue(tbCancelDate) AS [Cancelled],
DateDiff("d",tbCorpReceivedDate, IIf([Forms]![frmReportDateFilter].[tbToDate] = #01/01/2116#, Date(), [Forms]![frmReportDateFilter].[tbToDate])) AS [Aging Days Count],
LocalID AS [ID Number]
FROM tblDD
WHERE DateValue([tbBAReceivedDate]) BETWEEN [Forms]![frmReportDateFilter].[tbFromDate] AND [Forms]![frmReportDateFilter].[tbToDate]
ORDER BY [Group Name];