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 |