Other LOG SQL function


1. Usage of LOG to show Days since first order

SQL Server Query 1

            
 SELECT  
o.OrderID,
o.OrderDate,
DATEDIFF(DAY, FirstOrderDate, o.OrderDate) AS DaysSinceFirstOrder,
LOG(DATEDIFF(DAY, FirstOrderDate, o.OrderDate) + 1) AS LogDaysSinceFirstOrder
FROM Orders o
JOIN [Order Details] od ON o.OrderID = od.OrderID
CROSS APPLY (
SELECT MIN(OrderDate) AS FirstOrderDate
FROM Orders o2
JOIN [Order Details] od2 ON o2.OrderID = od2.OrderID
WHERE od2.ProductID = 11
) AS FirstOrder
WHERE od.ProductID = 11
ORDER BY o.OrderDate;

Create SQL query with SqlQueryBuilder 1

            
 var (sql1, parameters1) = new SqlQueryBuilder()  
.Select()
.Columns("o.OrderID", "o.OrderDate")
.Column(new DATEDIFF(SqlDateInterval.day, new Column("FirstOrderDate"), new Column("o.OrderDate"))
, "DaysSinceFirstOrder")
.Column(new LOG(
new DATEDIFF(SqlDateInterval.day, new Column("FirstOrderDate"), new Column("o.OrderDate"))
.AddArithmatic(new Arithmatic().Add(1))
)
, "LogDaysSinceFirstOrder")
.From("Orders", "o")
.Join(new List<IJoin>()
{
new INNERJOIN().TableName(new Table("[Order Details]","od"))
.On(new Column("o.OrderID").Equale(new Column("od.OrderID")))
})
.CrossApply(new SqlQueryBuilder().Select()
.Column(new MIN(new Column("OrderDate")), "FirstOrderDate")
.From("Orders", "o2")
.Join(new List<IJoin>()
{
new INNERJOIN().TableName(new Table("[Order Details]","od2"))
.On(new Column("o2.OrderID").Equale(new Column("od2.OrderID")))
})
.Where(new Where(new Column("od2.ProductID").Equale(11)))
, "FirstOrder")
.Where(new Where(new Column("od.ProductID").Equale(11)))
.OrderBy(new OrderBy().Set(new Column("o.OrderDate")))
.Build();

Query build by SqlQueryBuilder 1

            
SELECT o.OrderID,
       o.OrderDate,
       DATEDIFF(day, FirstOrderDate, o.OrderDate) AS DaysSinceFirstOrder,
       LOG(DATEDIFF(day, FirstOrderDate, o.OrderDate) + @pMAIN_2507192048120206690) AS LogDaysSinceFirstOrder
FROM Orders AS o
     INNER JOIN
     [Order Details] AS od
     ON o.OrderID = od.OrderID CROSS APPLY (SELECT MIN(OrderDate) AS FirstOrderDate
                                            FROM Orders AS o2
                                                 INNER JOIN
                                                 [Order Details] AS od2
                                                 ON o2.OrderID = od2.OrderID
                                            WHERE od2.ProductID = @pMAIN_2507192048120206691) AS FirstOrder
WHERE od.ProductID = @pMAIN_2507192048120206692
ORDER BY o.OrderDate ASC;


            
        

Parameters (If used)

Name Value
@pMAIN_2507192048120206690 1
@pMAIN_2507192048120206691 11
@pMAIN_2507192048120206692 11

Query Results 1:

  OrderID OrderDate DaysSinceFirstOrder LogDaysSinceFirstOrder
1 10248 7/4/1996 12:00:00 AM 0 0
2 10296 9/3/1996 12:00:00 AM 61 4.127134385045092
3 10327 10/11/1996 12:00:00 AM 99 4.605170185988092
4 10353 11/13/1996 12:00:00 AM 132 4.890349128221754
5 10365 11/27/1996 12:00:00 AM 146 4.990432586778736
6 10407 1/7/1997 12:00:00 AM 187 5.236441962829949
7 10434 2/3/1997 12:00:00 AM 214 5.3706380281276624
8 10442 2/11/1997 12:00:00 AM 222 5.407171771460119
9 10443 2/12/1997 12:00:00 AM 223 5.4116460518550396
10 10466 3/6/1997 12:00:00 AM 245 5.5053315359323625
11 10486 3/26/1997 12:00:00 AM 265 5.583496308781699
12 10489 3/28/1997 12:00:00 AM 267 5.5909869805108565
13 10528 5/6/1997 12:00:00 AM 306 5.726847747587197
14 10535 5/13/1997 12:00:00 AM 313 5.749392985908253
15 10542 5/20/1997 12:00:00 AM 320 5.771441123130016
16 10545 5/22/1997 12:00:00 AM 322 5.777652323222656
17 10553 5/30/1997 12:00:00 AM 330 5.802118375377063
18 10566 6/12/1997 12:00:00 AM 343 5.840641657373398
19 10570 6/17/1997 12:00:00 AM 348 5.855071922202427
20 10614 7/29/1997 12:00:00 AM 390 5.968707559985366
21 10637 8/19/1997 12:00:00 AM 411 6.021023349349527
22 10698 10/9/1997 12:00:00 AM 462 6.137727054086234
23 10726 11/3/1997 12:00:00 AM 487 6.1903154058531475
24 10770 12/9/1997 12:00:00 AM 523 6.261491684321042
25 10797 12/25/1997 12:00:00 AM 539 6.29156913955832
26 10800 12/26/1997 12:00:00 AM 540 6.293419278846481
27 10823 1/9/1998 12:00:00 AM 554 6.318968113746434
28 10842 1/20/1998 12:00:00 AM 565 6.338594078203183
29 10862 1/30/1998 12:00:00 AM 575 6.3561076606958915
30 10869 2/4/1998 12:00:00 AM 580 6.364750756851911
31 10889 2/16/1998 12:00:00 AM 592 6.385194398997726
32 10912 2/26/1998 12:00:00 AM 602 6.401917196727186
33 10926 3/4/1998 12:00:00 AM 608 6.411818267709897
34 10944 3/12/1998 12:00:00 AM 616 6.424869023905388
35 10986 3/30/1998 12:00:00 AM 634 6.453624998892692
36 10989 3/31/1998 12:00:00 AM 635 6.455198563340122
37 11043 4/22/1998 12:00:00 AM 657 6.489204931325317
38 11073 5/5/1998 12:00:00 AM 670 6.508769136971682