Inner Join Based on Conditional Column in Sql server-2008

  • I Have Table Called 'Sales' and 'Voucher',I Need To Show Each Customer ""Dueamount"" Details Based Upon Customer Paid in 'Voucher' Table But One thing I have Not Maintained Transaction History For Customer in 'Sales' Table Means I Have Column named "CreditAmount" in 'Sales' and Column Named "VoucherAmount" in 'Voucher' ,For every transaction I am updating Column named "CreditAmount" in 'Sales', So finally 'Dueamount' Must be calculated according to "VoucherAmount" of customer in 'Voucher' Table....

    Sales Table:

    BillMasterId BillDate CustomerId NetAmount CreditAmount

    26 03/03/2014 101 1000 1000

    Voucher Table :

    BillDate CustomerId VoucherAmount BillMasterId

    03/03/2014 101 500 26

    03/03/2014 101 300 26

    03/03/2014 101 200 26

    My query:

    SELECT CONVERT(varchar,BillDate,103) as BillDate,isnull(NetAmount,0) as BillAmount, case when VoucherAmount != 0 then sum(VoucherAmount)else 0 end as'AmountReceived',case when CreditAmount !=0 then CreditAmount else 0 end as 'DueAmount' from Voucher INNER join Sales on CustomerId=CustomerID and BillMasterID=BillMasterID WHERE CONVERT(varchar,BillDate,103)='03/03/2014' AND CustomerId=101

    My Output:

    BillDate BillAmount AmountReceived DueAmount

    03/03/2014 1000 0 0

    03/03/2014 1000 500 0

    03/03/2014 1000 300 0

    03/03/2014 1000 200 0

    Exact Output:

    BillDate BillAmount AmountReceived DueAmount

    03/03/2014 1000 0 1000

    03/03/2014 1000 500 500

    03/03/2014 1000 300 200

    03/03/2014 1000 200 0

  • Hi and welcome to the forums. Can you post this as consumable ddl and sample data? Take a look at the first link in my signature for best practices when posting questions.

    We can also help you speed this up by making your query sargable. With the function in your where clause you will not be able to gain any benefits from indexing.

    _______________________________________________________________

    Need help? Help us help you.

    Read the article at http://www.sqlservercentral.com/articles/Best+Practices/61537/ for best practices on asking questions.

    Need to split a string? Try Jeff Modens splitter http://www.sqlservercentral.com/articles/Tally+Table/72993/.

    Cross Tabs and Pivots, Part 1 – Converting Rows to Columns - http://www.sqlservercentral.com/articles/T-SQL/63681/
    Cross Tabs and Pivots, Part 2 - Dynamic Cross Tabs - http://www.sqlservercentral.com/articles/Crosstab/65048/
    Understanding and Using APPLY (Part 1) - http://www.sqlservercentral.com/articles/APPLY/69953/
    Understanding and Using APPLY (Part 2) - http://www.sqlservercentral.com/articles/APPLY/69954/

Viewing 2 posts - 1 through 1 (of 1 total)

You must be logged in to reply to this topic. Login to reply