Saturday, 22 February 2020

C# - LINQ - SUM()

Understanding Sales Order and Purchase Order Date Fields
Sales Order:
Requested: This is the date the customer is requesting the order be shipped. If this is the only date filled in, then Activate will calculate the due date of the order based on this date.
Purchase Order:
Requested: This is the date that you are requesting to receive the PO from your vendor. If only this date is filled in

Database Table


SELECT [CustomerKey],
  sum([OrderAmount]) As 'SumOrderAmount',
  sum([ShippingAmount]) As 'ShippingAmount', 
  sum([OrderQuantity]) As 'OrderQuantity', 
  MinShippingAmount,
  MaxShippingAmount
  FROM (
   SELECT [CustomerKey], [OrderNumber], [OrderQuantity]
      , sum([OrderAmount]) OrderAmount
      , sum([ShippingAmount]) ShippingAmount
         , min([ShippingAmount]) As 'MinShippingAmount'
         , max([ShippingAmount]) As 'MaxShippingAmount'
   FROM [Corp].[dbo].[OrderLineItems]
   GROUP BY [CustomerKey], [OrderNumber], [OrderQuantity]
) AS TEMP
GROUP BY [CustomerKey],  [OrderNumber], [OrderQuantity], MinShippingAmount,  MaxShippingAmount ;


Results:



SELECT [CustomerKey], [OrderNumber],
       SUM([OrderAmount]) As 'SumOrderAmount',
          SUM([OrderQuantity])  As 'SumOrderQuantity'
FROM (
   SELECT [CustomerKey],
          [OrderNumber],
                SUM([OrderAmount]) [OrderAmount],
                SUM([OrderQuantity]) [OrderQuantity]
   FROM [Corp].[dbo].[OrderLineItems]
   GROUP BY [CustomerKey], [OrderNumber]
) As TEMPTable
GROUP BY [CustomerKey], [OrderNumber];

Result 



LINQ

            CorpEntities corpEntities = new CorpEntities();
            List<OrderLineItem> OrderLineItemsList = corpEntities.OrderLineItems.ToList();

            var Results = OrderLineItemsList.GroupBy( x => new {
                      x.CustomerKey,
                      x.OrderNumber
                    })
                    .Select(z => new
                    {
                       Name = z.Key.ToString(),
                       SumOrderQuantity = z.Sum(w => w.OrderQuantity),
                       SumOrderAmount = z.Sum(w => w.OrderAmount),
                    }).ToList();

            foreach (var items in Results)
            {
                var NameGrp = items.Name;               
                var SumOrderQuantity = items.OrderQuantity;
                var SumOrderAmount = items.OrderAmount;

                Console.WriteLine(Name +  " - "  +
                                 SumOrderQuantity + " - " +  SumOrderAmount + " - " );
            }




No comments:

Post a Comment