Other LOG10 SQL function


1. Usage of LOG10 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 LOG10(
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,
       LOG10(DATEDIFF(day, FirstOrderDate, o.OrderDate) + @pMAIN_2507200159531518460) 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_2507200159531518461) AS FirstOrder
WHERE od.ProductID = @pMAIN_2507200159531518462
ORDER BY o.OrderDate ASC;


            
        

Parameters (If used)

Name Value
@pMAIN_2507200159531518460 1
@pMAIN_2507200159531518461 11
@pMAIN_2507200159531518462 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 1.792391689498254
3 10327 10/11/1996 12:00:00 AM 99 2
4 10353 11/13/1996 12:00:00 AM 132 2.123851640967086
5 10365 11/27/1996 12:00:00 AM 146 2.167317334748176
6 10407 1/7/1997 12:00:00 AM 187 2.27415784926368
7 10434 2/3/1997 12:00:00 AM 214 2.3324384599156054
8 10442 2/11/1997 12:00:00 AM 222 2.3483048630481607
9 10443 2/12/1997 12:00:00 AM 223 2.3502480183341627
10 10466 3/6/1997 12:00:00 AM 245 2.3909351071033793
11 10486 3/26/1997 12:00:00 AM 265 2.424881636631067
12 10489 3/28/1997 12:00:00 AM 267 2.428134794028789
13 10528 5/6/1997 12:00:00 AM 306 2.4871383754771865
14 10535 5/13/1997 12:00:00 AM 313 2.496929648073215
15 10542 5/20/1997 12:00:00 AM 320 2.506505032404872
16 10545 5/22/1997 12:00:00 AM 322 2.509202522331103
17 10553 5/30/1997 12:00:00 AM 330 2.519827993775719
18 10566 6/12/1997 12:00:00 AM 343 2.53655844257153
19 10570 6/17/1997 12:00:00 AM 348 2.5428254269591797
20 10614 7/29/1997 12:00:00 AM 390 2.5921767573958667
21 10637 8/19/1997 12:00:00 AM 411 2.6148972160331345
22 10698 10/9/1997 12:00:00 AM 462 2.6655809910179533
23 10726 11/3/1997 12:00:00 AM 487 2.6884198220027105
24 10770 12/9/1997 12:00:00 AM 523 2.7193312869837265
25 10797 12/25/1997 12:00:00 AM 539 2.7323937598229686
26 10800 12/26/1997 12:00:00 AM 540 2.7331972651065692
27 10823 1/9/1998 12:00:00 AM 554 2.7442929831226763
28 10842 1/20/1998 12:00:00 AM 565 2.7528164311882715
29 10862 1/30/1998 12:00:00 AM 575 2.760422483423212
30 10869 2/4/1998 12:00:00 AM 580 2.7641761323903307
31 10889 2/16/1998 12:00:00 AM 592 2.7730546933642626
32 10912 2/26/1998 12:00:00 AM 602 2.780317312140151
33 10926 3/4/1998 12:00:00 AM 608 2.784617292632875
34 10944 3/12/1998 12:00:00 AM 616 2.7902851640332416
35 10986 3/30/1998 12:00:00 AM 634 2.8027737252919755
36 10989 3/31/1998 12:00:00 AM 635 2.803457115648414
37 11043 4/22/1998 12:00:00 AM 657 2.8182258936139557
38 11073 5/5/1998 12:00:00 AM 670 2.826722520168992