tags:

views:

57

answers:

0

Hi there again, have been puzzling this query and haven't quite got it. Below is where I am up to and below that is the result. It returns the line total and not the column total, any help appreciated.

SELECT TOP (100) PERCENT 'SA' AS Doc_Type1,
    'A' + SUBSTRING('000000', 1, 6 - LEN(CAST(dbo.companies.companyId AS VARCHAR(10)))) + CAST(dbo.companies.companyId AS VARCHAR(10)) AS Client_ID,
    1200 AS [Bank Nom],
    0 AS Department,
    CONVERT(nvarchar(20), dbo.invoices.invoiceDatePaid, 103) AS Cleared_Date,
    'Chq PS £' + CAST(SUM(dbo.invoices.invoiceTotal) AS VARCHAR) AS Payment_type,
    dbo.invoices.invoiceId,
    SUM(DISTINCT dbo.invoices.invoiceTotal) AS Value,
    '9' AS vat,
    ' ' AS bllank,
    1 AS Ex_rate
FROM dbo.invoices
    INNER JOIN dbo.companies
    ON  dbo.invoices.invoiceCompanyId = dbo.companies.companyId
GROUP BY dbo.companies.companyId,
    dbo.invoices.invoiceId,
    dbo.invoices.invoiceDatePaid,
    dbo.companies.companyPaymentType
HAVING (
        dbo.invoices.invoiceDatePaid >= DATEDIFF(DAY, 1, CURRENT_TIMESTAMP)
    )
AND
    (
        dbo.invoices.invoiceDatePaid < DATEDIFF(DAY, 0, CURRENT_TIMESTAMP)
    )
AND
    (
        dbo.companies.companyPaymentType = 2
    )

RESULTING VIEW

Doc_Type1 client_id |Bank Nom |Department |Cleared_Date |Payment_type     |invoiceid |Value  |vat |bllank |Ex_rate
-----------------------------------------------------------------------------------------------------------------
SA        A005014    1200      0           24/06/2010     Chq PS £232.92   43237      232.92  9            1
SA        A005419    1200      0           24/06/2010     Chq PS £257.27   43427      257.27  9            1
SA        A005611    1200      0           24/06/2010     Chq PS £255.84   43519      255.84  9            1

do i need some sort of sub routine here??

i have tried to do this and come up with this routine, but it seems untidy!! SELECT TOP (100) PERCENT 'SA' AS Doc_Type1, 'A' + SUBSTRING('000000', 1, 6 - LEN(CAST(companies_1.companyId AS varchar(10)))) + CAST(companies_1.companyId AS varchar(10)) AS Client_ID, 1200 AS Bank_Nom, 0 AS Department, CONVERT(nvarchar(20), invoices_1.invoiceDatePaid, 103) AS Cleared_Date, (SELECT 'Bacs £' + CAST(SUM(CONVERT(float, dbo.invoices.invoiceTotal)) AS varchar(20)) AS Payment_type FROM dbo.invoices INNER JOIN dbo.companies ON dbo.invoices.invoiceCompanyId = dbo.companies.companyId WHERE (dbo.invoices.invoiceDatePaid >= DATEDIFF(DAY, 1, CURRENT_TIMESTAMP)) AND (dbo.invoices.invoiceDatePaid < DATEDIFF(DAY, 0, CURRENT_TIMESTAMP)) AND (dbo.companies.companyPaymentType = 3)) AS Payment_type, invoices_1.invoiceId, invoices_1.invoiceTotal AS Value, '9' AS vat, ' ' AS bllank, 1 AS Ex_rate FROM dbo.invoices AS invoices_1 INNER JOIN dbo.companies AS companies_1 ON invoices_1.invoiceCompanyId = companies_1.companyId WHERE (invoices_1.invoiceDatePaid >= DATEDIFF(DAY, 1, CURRENT_TIMESTAMP)) AND (invoices_1.invoiceDatePaid < DATEDIFF(DAY, 0, CURRENT_TIMESTAMP)) AND (companies_1.companyPaymentType = 3) ORDER BY invoices_1.invoiceId DESC

but it works