Audit Trail - Report
Audit Trail Report
- Audit Trail Report will be given on Audit Trail Index
Report Columns
| Label Name | Property Name |
|---|---|
| Company Name | Company Name |
| Report Name | Audit Tail Report |
| Report Date | 13-Jun-25 |
| Date Range | 01-Apr-25 To 13-Jun-25 |
| AuditTrailNo | AuditTrailNo |
| Document Type | DocumentType |
| Year/Doc No | YearDocNo |
| Operation | Operation |
| Date | Date |
| User Name | UserName |
| Level | Level |
| Field Names | FieldName |
| Old Values | OldValue |
| New Values | NewValue |
| Updated By | UpdatedBy |
| Reason | Reason |
Query for Audit Trail Report
DECLARE @cols NVARCHAR(MAX),
@sql NVARCHAR(MAX);
-- Step 1: Get all unique displaynames for dynamic pivot
SELECT @cols = STRING_AGG(QUOTENAME(displayname), ',')
FROM (
SELECT DISTINCT displayname
FROM AuditTrail1
WHERE AuditTrailNo = '00000009'
) AS d;
-- Step 2: Build dynamic SQL query
SET @sql = '
WITH BaseData AS (
SELECT
A1.AuditTrailNo,
AD.docTypeName,
CONCAT(LEFT(A.yeardocno,4), ''-'', SUBSTRING(A.yeardocno, 5, 2), ''/'', RIGHT(yeardocno, 6)) AS yeardocNo,
IIF(Operationcode = ''RC'', ''Re-Created'',
IIF(Operationcode = ''MM'', ''Modify Main'',
IIF(Operationcode = ''ML'', ''Modify Line'',
IIF(Operationcode = ''DM'', ''Delete Main'', ''Delete Line'')
)
)
) AS operationname,
A.operationDate,
A.username,
A.id,
A1.displayname,
''Old'' AS ValueType,
A1.oldvalue AS Value
FROM AuditTrail1 A1
LEFT JOIN AuditTrail A ON A1.AuditTrailNo = A.AuditTrailNo
LEFT JOIN AuditTrailDocType AD ON A.DocTypeCode = AD.docType
WHERE A1.AuditTrailNo = ''00000009''
UNION ALL
SELECT
A1.AuditTrailNo,
AD.docTypeName,
CONCAT(LEFT(A.yeardocno,4), ''-'', SUBSTRING(A.yeardocno, 5, 2), ''/'', RIGHT(yeardocno, 6)) AS yeardocNo,
IIF(Operationcode = ''RC'', ''Re-Created'',
IIF(Operationcode = ''MM'', ''Modify Main'',
IIF(Operationcode = ''ML'', ''Modify Line'',
IIF(Operationcode = ''DM'', ''Delete Main'', ''Delete Line'')
)
)
) AS operationname,
A.operationDate,
A.username,
A.id,
A1.displayname,
''New'' AS ValueType,
A1.newvalue AS Value
FROM AuditTrail1 A1
LEFT JOIN AuditTrail A ON A1.AuditTrailNo = A.AuditTrailNo
LEFT JOIN AuditTrailDocType AD ON A.DocTypeCode = AD.docType
WHERE A1.AuditTrailNo = ''00000009''
)
SELECT
AuditTrailNo,
docTypeName,
yeardocNo,
operationname,
operationDate,
username,
id,
ValueType,
' + @cols + '
FROM BaseData
PIVOT (
MAX(Value)
FOR displayname IN (' + @cols + ')
) AS PivotedResult
ORDER BY id DESC, ValueType DESC;
';
-- Step 3: Execute dynamic SQL
EXEC sp_executesql @sql;