y值。只是不要在catch all查询中使用错误的类型,不要使用它。捕获所有查询,因为SQL Server会在第一次调用存储过程时缓存执行计划并重用它。如果为参数传递一个null,服务器可能会创建一个扫描表的计划,而不是寻找索引,并在下次使用实际值调用存储

y值。只是不要在catch all查询中使用错误的类型,不要使用它。捕获所有查询,因为SQL Server会在第一次调用存储过程时缓存执行计划并重用它。如果为参数传递一个null,服务器可能会创建一个扫描表的计划,而不是寻找索引,并在下次使用实际值调用存储,sql,sql-server,tsql,stored-procedures,sql-server-2012,Sql,Sql Server,Tsql,Stored Procedures,Sql Server 2012,y值。只是不要在catch all查询中使用错误的类型,不要使用它。捕获所有查询,因为SQL Server会在第一次调用存储过程时缓存执行计划并重用它。如果为参数传递一个null,服务器可能会创建一个扫描表的计划,而不是寻找索引,并在下次使用实际值调用存储过程时使用该计划(不是真正的答案,而是提示(属于注释)。这有助于解决一个完全不同的问题,不是多个过滤器和日期。会计应用程序始终对表进行更新,因此繁重的分析查询将被更新阻止。解决方案不是使用未编制索引的临时表,而是使用一个单独的报告数据库或OLA


y值。只是不要在catch all查询中使用错误的类型,不要使用它。捕获所有查询,因为SQL Server会在第一次调用存储过程时缓存执行计划并重用它。如果为参数传递一个
null
,服务器可能会创建一个扫描表的计划,而不是寻找索引,并在下次使用实际值调用存储过程时使用该计划(不是真正的答案,而是提示(属于注释)。这有助于解决一个完全不同的问题,不是多个过滤器和日期。会计应用程序始终对表进行更新,因此繁重的分析查询将被更新阻止。解决方案不是使用未编制索引的临时表,而是使用一个单独的报告数据库或OLAP多维数据集,这是所有会计应用程序都提供的。他们中的一些人可能会将其作为管理层不愿意支付的额外费用提供,因此开发人员必须自己构建它们。但是临时表从来都不是一个好的解决方案多次查询索引表要比将数据复制到临时表中并在没有索引的情况下执行查询快几个数量级。如果临时表被索引了,那么,您已经到了报告数据库的一半了。为什么不创建一个适当的报告数据库,只需要在计划中使用新记录进行更新,而不是在查询时从头开始创建临时表呢?是的,一个单独的服务器/数据库是一件好事。还可以使用MSSQLSColumnStore在事务数据库上运行报告。但要求是使代码更短,更易于维护。对我来说,这意味着这些表不包含数百万行。我会回答具体的要求,但我不会争辩这可能是一个评论。谢谢,工会会放慢执行速度吗?
  ALTER PROCEDURE [dbo].[Pro_General_Ledger_Reported2] -- exec Sp_General_Ledger_Reported2 1,NULL,NULL,NULL,NULL
        @CompanyID INT = NULL
        ,@GLAccountNo VARCHAR(30) = NULL
        ,@GLAccountNoFrom VARCHAR(30) = NULL
        ,@FromDate VARCHAR(30) = ''
        ,@ToDate VARCHAR(30) = ''
        --Select * From GLedger
    AS
    BEGIN
        SET @FromDate = CASE 
                WHEN @FromDate = ''
                    THEN '1/1/2000'
                ELSE @FromDate
                END
        SET @ToDate = CASE 
                WHEN @ToDate = ''
                    THEN '1/1/2030'
                ELSE @ToDate
                END
    
        IF (
                @FromDate != NULL
                OR @FromDate != ''
                AND @ToDate != NULL
                OR @ToDate != ''
                )
        BEGIN
            SELECT Com.CompanyCode
                ,G.BusinessArea
                ,'Not Assigned' AS 'ProjectCode'
                ,G.GLAccountNo
                ,COA.ShortText
                ,G.DocCurrency
                ,G.DocCurrencyAmount
                ,G.Currency AS 'localCurrecny'
                ,G.Amount AS 'LocalAmount'
                ,V.Reference AS 'Reference'
                ,cast(G.DocumentNumber AS VARCHAR(100)) AS 'DocumentNumber'
                ,PVTypes.Type AS 'Document Type'
                ,V.PostingDate AS 'PostingDate'
                ,V.InvoiceDate AS 'DocmentDate'
                ,G.PK
                ,V.ClearingDocumentNo AS 'Clearing Document'
                ,'' AS 'Assignment'
                ,'' AS 'Department'
                ,'' AS 'ServiceLineCode'
                ,'' AS 'ProjectCode'
                ,'' AS 'OffSettingAcctNo'
                ,V.TEXT AS 'Text'
            FROM GLedger G
            INNER JOIN Company Com ON G.CompanyID = Com.CompanyID
            INNER JOIN Vendorinvoice V ON G.MainID = v.VendorInvoice_ID
                AND G.LedgerType_ID = '1'
            LEFT JOIN PVTypes ON V.Transaction_ID = PVTypes.Id
            LEFT JOIN COA ON G.GLAccountNo = COA.GLAccount
            WHERE (G.CompanyID = @CompanyID)
                AND (
                    G.GLAccountNo BETWEEN @GLAccountNo
                        AND @GLAccountNoFrom
                    )
                AND (
                    (
                        G.GLAccountNo >= @GLAccountNo
                        OR @GLAccountNo IS NULL
                        )
                    AND (
                        G.GLAccountNo <= @GLAccountNoFrom
                        OR @GLAccountNoFrom IS NULL
                        )
                    )
                AND (
                    Convert(DATE, G.DATETIME, 101) BETWEEN Convert(DATE, @FromDate, 101)
                        AND Convert(DATE, @ToDate, 101)
                    )
            
            UNION ALL
            
            SELECT Com.CompanyCode
                ,B.BranchCode
                ,P.ProjectCode AS 'ProjectCode'
                ,G.GLAccountNo
                ,COA.ShortText
                ,G.DocCurrency
                ,G.DocCurrencyAmount
                ,G.Currency AS 'localCurrecny'
                ,G.Amount AS 'LocalAmount'
                ,'' AS 'Reference'
                ,cast(G.DocumentNumber AS VARCHAR(100)) AS 'DocumentNumber'
                ,'' AS 'Document Type'
                ,'' AS 'PostingDate'
                ,'' AS 'DocmentDate'
                ,G.PK
                ,'' AS 'Clearing Document'
                ,VI.Assignment AS 'Assignment'
                ,D.DepartmentCode AS 'Department'
                ,S.Code AS 'ServiceLineCode'
                ,P.ProjectCode AS 'ProjectCode'
                ,'' AS 'OffSettingAcctNo'
                ,VI.TEXT AS 'Text'
            FROM GLedger G
            INNER JOIN Company Com ON G.CompanyID = Com.CompanyID
            INNER JOIN Branch B ON G.BusinessArea = B.BranchCode
            INNER JOIN VendorInvoiceTransactions VI ON G.SubID = VI.VendorTransactionsID
                AND G.LedgerType_ID = '2'
            LEFT JOIN Department D ON G.DepartmentID = D.DepartmentID
            LEFT JOIN ServiceLineMaster S ON G.ServiceLineID = S.ID
            LEFT JOIN Projects P ON VI.Project_ID = p.Project_ID
            LEFT JOIN COA ON G.GLAccountNo = COA.GLAccount
            WHERE (G.CompanyID = @CompanyID)
                AND (
                    (
                        G.GLAccountNo >= @GLAccountNo
                        OR @GLAccountNo IS NULL
                        )
                    AND (
                        G.GLAccountNo <= @GLAccountNoFrom
                        OR @GLAccountNoFrom IS NULL
                        )
                    )
                AND (
                    Convert(DATE, G.DATETIME, 101) BETWEEN Convert(DATE, @FromDate, 101)
                        AND Convert(DATE, @ToDate, 101)
                    )
            
            UNION ALL
            
            SELECT Com.CompanyCode
                ,B.BranchCode
                ,P.ProjectCode AS 'ProjectCode'
                ,G.GLAccountNo
                ,COA.ShortText
                ,G.DocCurrency
                ,G.DocCurrencyAmount
                ,G.Currency AS 'localCurrecny'
                ,G.Amount AS 'LocalAmount'
                ,S.InvoiceNo AS 'Reference'
                ,cast(G.DocumentNumber AS VARCHAR(100)) AS 'DocumentNumber'
                ,'' AS 'Document Type'
                ,S.PODate AS 'PostingDate'
                ,S.PODate AS 'DocmentDate'
                ,G.PK
                ,'' AS 'Clearing Document'
                ,S.AccountingAssignment AS 'Assignment'
                ,'' AS 'Department'
                ,'' AS 'ServiceLineCode'
                ,'' AS 'ProjectCode'
                ,'' AS 'OffSettingAcctNo'
                ,S.TextDescription AS 'Text'
            FROM GLedger G
            INNER JOIN Company Com ON G.CompanyID = Com.CompanyID
            INNER JOIN Branch B ON G.BusinessArea = B.BranchCode
            --inner join LedgerTypes L on G.LedgerType_ID = L.ID
            INNER JOIN Sales S ON G.MainID = S.SalesID
                AND G.LedgerType_ID = '3'
            LEFT JOIN Projects P ON S.AccAssignmentWBSElementID = p.Project_ID
            LEFT JOIN COA ON G.GLAccountNo = COA.GLAccount
            --inner join Department D on S.AccAssignmentDepartmentID = D.DepartmentID
            --inner join ServiceLineMaster SE on S.AccAssignmentServiceLineID = SE.ServiceLineID
            --inner join Projects P on S.AccAssignmentWBSElementID = P.Project_ID
            WHERE (G.CompanyID = @CompanyID)
                AND (
                    (
                        G.GLAccountNo >= @GLAccountNo
                        OR @GLAccountNo IS NULL
                        )
                    AND (
                        G.GLAccountNo <= @GLAccountNoFrom
                        OR @GLAccountNoFrom IS NULL
                        )
                    )
                AND (
                    Convert(DATE, G.DATETIME, 101) BETWEEN Convert(DATE, @FromDate, 101)
                        AND Convert(DATE, @ToDate, 101)
                    )
            
            UNION ALL
            
            SELECT Com.CompanyCode
                ,B.BranchCode
                ,P.ProjectCode AS 'ProjectCode'
                ,G.GLAccountNo
                ,COA.ShortText
                ,G.DocCurrency
                ,G.DocCurrencyAmount
                ,G.Currency AS 'localCurrecny'
                ,G.Amount AS 'LocalAmount'
                ,'' AS 'Reference'
                ,cast(G.DocumentNumber AS VARCHAR(100)) AS 'DocumentNumber'
                ,'' AS 'Document Type'
                ,'' AS 'PostingDate'
                ,'' AS 'DocmentDate'
                ,G.PK
                ,'' AS 'Clearing Document'
                ,'' AS 'Assignment'
                ,D.DepartmentCode AS 'Department'
                ,S.Name AS 'ServiceLineCode'
                ,P.ProjectCode AS 'ProjectCode'
                ,'' AS 'OffSettingAcctNo'
                ,'' AS 'Text'
            FROM GLedger G
            INNER JOIN Company Com ON G.CompanyID = Com.CompanyID
            INNER JOIN Branch B ON G.BusinessArea = B.BranchCode
            --inner join LedgerTypes L on G.LedgerType_ID = L.ID
            INNER JOIN SalesTransactions ST ON G.SubID = ST.SalesTransactionID
                AND G.LedgerType_ID = '4'
            LEFT JOIN Department D ON G.DepartmentID = D.DepartmentID
            LEFT JOIN ServiceLineMaster S ON G.ServiceLineID = S.ID
            LEFT JOIN Projects P ON ST.ProjectID = p.Project_ID
            LEFT JOIN COA ON G.GLAccountNo = COA.GLAccount
            WHERE (G.CompanyID = @CompanyID)
                AND (
                    (
                        G.GLAccountNo >= @GLAccountNo
                        OR @GLAccountNo IS NULL
                        )
                    AND (
                        G.GLAccountNo <= @GLAccountNoFrom
                        OR @GLAccountNoFrom IS NULL
                        )
                    )
                AND (
                    Convert(DATE, G.DATETIME, 101) BETWEEN Convert(DATE, @FromDate, 101)
                        AND Convert(DATE, @ToDate, 101)
                    )
            
            UNION ALL
            
            SELECT Com.CompanyCode
                ,G.BusinessArea
                ,'Not Assigned' AS 'ProjectCode'
                ,G.GLAccountNo
                ,COA.ShortText
                ,G.DocCurrency
                ,G.DocCurrencyAmount
                ,G.Currency AS 'localCurrecny'
                ,G.Amount AS 'LocalAmount'
                ,TAIP.Reference AS 'Reference'
                ,cast(G.DocumentNumber AS VARCHAR(100)) AS 'DocumentNumber'
                ,PVTypes.Type AS 'Document Type'
                ,TAIP.PostingDate AS 'PostingDate'
                ,TAIP.DocumentDate AS 'DocmentDate'
                ,G.PK
                ,'' AS 'Clearing Document'
                ,'' AS 'Assignment'
                ,'' AS 'Department'
                ,'' AS 'ServiceLineCode'
                ,'' AS 'ProjectCode'
                ,'' AS 'OffSettingAcctNo'
                ,TAIP.DocHeaderText AS 'Text'
            FROM GLedger G
            INNER JOIN Company Com ON G.CompanyID = Com.CompanyID
            INNER JOIN tblAccountsInvoicePayable TAIP ON G.MainID = TAIP.PayableInvoice_ID
                AND G.LedgerType_ID = '5'
            INNER JOIN PVTypes ON TAIP.Type = PVTypes.Id
            LEFT JOIN COA ON G.GLAccountNo = COA.GLAccount
            WHERE (G.CompanyID = @CompanyID)
                AND (
                    (
                        G.GLAccountNo >= @GLAccountNo
                        OR @GLAccountNo IS NULL
                        )
                    AND (
                        G.GLAccountNo <= @GLAccountNoFrom
                        OR @GLAccountNoFrom IS NULL
                        )
                    )
                AND (
                    Convert(DATE, G.DATETIME, 101) BETWEEN Convert(DATE, @FromDate, 101)
                        AND Convert(DATE, @ToDate, 101)
                    )
            
            UNION ALL
            
            SELECT Com.CompanyCode
                ,G.BusinessArea
                ,'Not Assigned' AS 'ProjectCode'
                ,G.GLAccountNo
                ,COA.ShortText
                ,G.DocCurrency
                ,G.DocCurrencyAmount
                ,G.Currency AS 'localCurrecny'
                ,G.Amount AS 'LocalAmount'
                ,RVI.Reference AS 'Reference'
                ,cast(G.DocumentNumber AS VARCHAR(100)) AS 'DocumentNumber'
                ,PVTypes.Type AS 'Document Type'
                ,RVI.PostingDate AS 'PostingDate'
                ,RVI.DocumentDate AS 'DocmentDate'
                ,G.PK
                ,'' AS 'Clearing Document'
                ,'' AS 'Assignment'
                ,'' AS 'Department'
                ,'' AS 'ServiceLineCode'
                ,'' AS 'ProjectCode'
                ,'' AS 'OffSettingAcctNo'
                ,RVI.DocHeaderText AS 'Text'
            FROM GLedger G
            INNER JOIN Company Com ON G.CompanyID = Com.CompanyID
            INNER JOIN ReceviableInvoice RVI ON G.MainID = RVI.ReceviableInvoice_ID
                AND G.LedgerType_ID = '7'
            INNER JOIN PVTypes ON RVI.Type = PVTypes.Id
            LEFT JOIN COA ON G.GLAccountNo = COA.GLAccount
            WHERE (G.CompanyID = @CompanyID)
                AND (
                    (
                        G.GLAccountNo >= @GLAccountNo
                        OR @GLAccountNo IS NULL
                        )
                    AND (
                        G.GLAccountNo <= @GLAccountNoFrom
                        OR @GLAccountNoFrom IS NULL
                        )
                    )
                AND (
                    Convert(DATE, G.DATETIME, 101) BETWEEN Convert(DATE, @FromDate, 101)
                        AND Convert(DATE, @ToDate, 101)
                    )
            
            UNION ALL
            
            SELECT Com.CompanyCode
                ,G.BusinessArea
                ,P.ProjectCode AS 'ProjectCode'
                ,G.GLAccountNo
                ,COA.ShortText
                ,G.DocCurrency
                ,G.DocCurrencyAmount
                ,G.Currency AS 'localCurrecny'
                ,G.Amount AS 'LocalAmount'
                ,PDHD.Reference AS 'Reference'
                ,cast(G.DocumentNumber AS VARCHAR(100)) AS 'DocumentNumber'
                ,PVTypes.Type AS 'Document Type'
                ,PDHD.PostingDate AS 'PostingDate'
                ,PDHD.DocumentDate AS 'DocmentDate'
                ,G.PK
                ,'' AS 'Clearing Document'
                ,PDHD.Assignment AS 'Assignment'
                ,D.DepartmentCode AS 'Department'
                ,S.Name AS 'ServiceLineCode'
                ,P.ProjectCode AS 'ProjectCode'
                ,'' AS 'OffSettingAcctNo'
                ,PDHD.DocHeaderText AS 'Text'
            FROM GLedger G
            INNER JOIN Company Com ON G.CompanyID = Com.CompanyID
            INNER JOIN PostDocumentHeaderData PDHD ON G.MainID = PDHD.VendorPVId
                AND G.LedgerType_ID = '8'
            INNER JOIN PVTypes ON PDHD.TypeID = PVTypes.Id
            LEFT JOIN Department D ON G.DepartmentID = D.DepartmentID
            LEFT JOIN ServiceLineMaster S ON G.ServiceLineID = S.ID
            LEFT JOIN Projects P ON PDHD.Projects = p.Project_ID
            LEFT JOIN COA ON G.GLAccountNo = COA.GLAccount
            WHERE (G.CompanyID = @CompanyID)
                AND (
                    (
                        G.GLAccountNo >= @GLAccountNo
                        OR @GLAccountNo IS NULL
                        )
                    AND (
                        G.GLAccountNo <= @GLAccountNoFrom
                        OR @GLAccountNoFrom IS NULL
                        )
                    )
                AND (
                    Convert(DATE, G.DATETIME, 101) BETWEEN Convert(DATE, @FromDate, 101)
                        AND Convert(DATE, @ToDate, 101)
                    )
            
            UNION ALL
            
            SELECT Com.CompanyCode
                ,G.BusinessArea
                ,P.ProjectCode AS 'ProjectCode'
                ,G.GLAccountNo
                ,COA.ShortText
                ,G.DocCurrency
                ,G.DocCurrencyAmount
                ,G.Currency AS 'localCurrecny'
                ,G.Amount AS 'LocalAmount'
                ,VPHD.Reference AS 'Reference'
                ,cast(G.DocumentNumber AS VARCHAR(100)) AS 'DocumentNumber'
                ,PVTypes.Type AS 'Document Type'
                ,VPHD.PostingDate AS 'PostingDate'
                ,VPHD.DocumentDate AS 'DocmentDate'
                ,G.PK
                ,'' AS 'Clearing Document'
                ,VPHD.Assignment AS 'Assignment'
                ,D.DepartmentCode AS 'Department'
                ,S.Name AS 'ServiceLineCode'
                ,P.ProjectCode AS 'ProjectCode'
                ,'' AS 'OffSettingAcctNo'
                ,VPHD.DocHeaderText AS 'Text'
            FROM GLedger G
            INNER JOIN Company Com ON G.CompanyID = Com.CompanyID
            INNER JOIN VendorPVHeaderData VPHD ON G.MainID = VPHD.VendorPVId
                AND G.LedgerType_ID = '8'
            INNER JOIN PVTypes ON VPHD.TypeID = PVTypes.Id
            LEFT JOIN Department D ON G.DepartmentID = D.DepartmentID
            LEFT JOIN ServiceLineMaster S ON G.ServiceLineID = S.ID
            LEFT JOIN Projects P ON VPHD.Projects = p.Project_ID
            LEFT JOIN COA ON G.GLAccountNo = COA.GLAccount
            WHERE (G.CompanyID = @CompanyID)
                AND (
                    (
                        G.GLAccountNo >= @GLAccountNo
                        OR @GLAccountNo IS NULL
                        )
                    AND (
                        G.GLAccountNo <= @GLAccountNoFrom
                        OR @GLAccountNoFrom IS NULL
                        )
                    )
                AND (
                    Convert(DATE, G.DATETIME, 101) BETWEEN Convert(DATE, @FromDate, 101)
                        AND Convert(DATE, @ToDate, 101)
                    )
            
            UNION ALL
            
            SELECT Com.CompanyCode
                ,B.BranchCode
                ,'Not Assigned' AS 'ProjectCode'
                ,G.GLAccountNo
                ,COA.ShortText
                ,G.DocCurrency
                ,G.DocCurrencyAmount
                ,G.Currency AS 'localCurrecny'
                ,G.Amount AS 'LocalAmount'
                ,V.Reference AS 'Reference'
                ,cast(G.DocumentNumber AS VARCHAR(100)) AS 'DocumentNumber'
                ,PVTypes.Type AS 'Document Type'
                ,V.PostingDate AS 'PostingDate'
                ,V.InvoiceDate AS 'DocmentDate'
                ,G.PK
                ,V.ClearingDocumentNo AS 'Clearing Document'
                ,'' AS 'Assignment'
                ,'' AS 'Department'
                ,'' AS 'ServiceLineCode'
                ,'' AS 'ProjectCode'
                ,'' AS 'Offsettingacctno'
                ,V.TEXT AS 'Text'
            FROM GLedger G
            INNER JOIN Company Com ON G.CompanyID = Com.CompanyID
            INNER JOIN Branch B ON G.BusinessArea = B.BranchCode
            --inner join LedgerTypes L on G.LedgerType_ID = L.ID
            INNER JOIN Vendorinvoice V ON G.MainID = v.VendorInvoice_ID
                AND G.LedgerType_ID = '9'
            INNER JOIN PVTypes ON V.Transaction_ID = PVTypes.Id
            LEFT JOIN COA ON G.GLAccountNo = COA.GLAccount
            WHERE (G.CompanyID = @CompanyID)
                AND (
                    (
                        G.GLAccountNo >= @GLAccountNo
                        OR @GLAccountNo IS NULL
                        )
                    AND (
                        G.GLAccountNo <= @GLAccountNoFrom
                        OR @GLAccountNoFrom IS NULL
                        )
                    )
                AND (
                    Convert(DATE, G.DATETIME, 101) BETWEEN Convert(DATE, @FromDate, 101)
                        AND Convert(DATE, @ToDate, 101)
                    )
            
            UNION ALL
            
            SELECT Com.CompanyCode
                ,B.BranchCode
                ,P.ProjectCode AS 'ProjectCode'
                ,G.GLAccountNo
                ,COA.ShortText
                ,G.DocCurrency
                ,G.DocCurrencyAmount
                ,G.Currency AS 'localCurrecny'
                ,G.Amount AS 'LocalAmount'
                ,S.InvoiceNo AS 'Reference'
                ,cast(G.DocumentNumber AS VARCHAR(100)) AS 'DocumentNumber'
                ,'' AS 'Document Type'
                ,S.PODate AS 'PostingDate'
                ,S.PODate AS 'DocmentDate'
                ,G.PK
                ,'' AS 'Clearing Document'
                ,S.AccountingAssignment AS 'Assignment'
                ,'' AS 'Department'
                ,'' AS 'ServiceLineCode'
                ,'' AS 'ProjectCode'
                ,'' AS 'Offsettingacctno'
                ,S.TextDescription AS 'Text'
            FROM GLedger G
            INNER JOIN Company Com ON G.CompanyID = Com.CompanyID
            INNER JOIN Branch B ON G.BusinessArea = B.BranchCode
            --inner join LedgerTypes L on G.LedgerType_ID = L.ID
            INNER JOIN Sales S ON G.MainID = S.SalesID
                AND G.LedgerType_ID = '9'
            LEFT JOIN Projects P ON S.AccAssignmentWBSElementID = p.Project_ID
            LEFT JOIN COA ON G.GLAccountNo = COA.GLAccount
            WHERE (G.CompanyID = @CompanyID)
                AND (
                    (
                        G.GLAccountNo >= @GLAccountNo
                        OR @GLAccountNo IS NULL
                        )
                    AND (
                        G.GLAccountNo <= @GLAccountNoFrom
                        OR @GLAccountNoFrom IS NULL
                        )
                    )
                AND (
                    Convert(DATE, G.DATETIME, 101) BETWEEN Convert(DATE, @FromDate, 101)
                        AND Convert(DATE, @ToDate, 101)
                    )
            
            UNION ALL
            
            SELECT Com.CompanyCode
                ,G.BusinessArea
                ,'Not Assigned' AS 'ProjectCode'
                ,G.GLAccountNo
                ,COA.ShortText
                ,G.DocCurrency
                ,G.DocCurrencyAmount
                ,G.Currency AS 'localCurrecny'
                ,G.Amount AS 'LocalAmount'
                ,V.Reference AS 'Reference'
                ,cast(G.DocumentNumber AS VARCHAR(100)) AS 'DocumentNumber'
                ,PVTypes.Type AS 'Document Type'
                ,V.PostingDate AS 'PostingDate'
                ,V.InvoiceDate AS 'DocmentDate'
                ,G.PK
                ,V.ClearingDocumentNo AS 'Clearing Document'
                ,'' AS 'Assignment'
                ,'' AS 'Department'
                ,'' AS 'ServiceLineCode'
                ,'' AS 'ProjectCode'
                ,'' AS 'OffSettingAcctNo'
                ,V.TEXT AS 'Text'
            FROM GLedger G
            INNER JOIN Company Com ON G.CompanyID = Com.CompanyID
            INNER JOIN Vendorinvoice V ON G.MainID = v.VendorInvoice_ID
                AND G.LedgerType_ID = '10'
            LEFT JOIN PVTypes ON V.Transaction_ID = PVTypes.Id
            LEFT JOIN COA ON G.GLAccountNo = COA.GLAccount
            WHERE (G.CompanyID = @CompanyID)
                AND (
                    G.GLAccountNo BETWEEN @GLAccountNo
                        AND @GLAccountNoFrom
                    )
                AND (
                    (
                        G.GLAccountNo >= @GLAccountNo
                        OR @GLAccountNo IS NULL
                        )
                    AND (
                        G.GLAccountNo <= @GLAccountNoFrom
                        OR @GLAccountNoFrom IS NULL
                        )
                    )
                AND (
                    Convert(DATE, G.DATETIME, 101) BETWEEN Convert(DATE, @FromDate, 101)
                        AND Convert(DATE, @ToDate, 101)
                    )
        END

    END
        --Select * from Projects