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 |