Other TAN SQL function
1. Usage of TAN to show Sales on Customer Location
SQL Server Query 1
SELECT
c.CustomerID,
c.CompanyName,
ca.CustomerAngle,
TAN(ca.CustomerAngle) AS TangentOfAngle,
SUM(od.Quantity * od.UnitPrice) AS TotalSales
FROM Customers c
JOIN Orders o ON c.CustomerID = o.CustomerID
JOIN [Order Details] od ON o.OrderID = od.OrderID
JOIN(
VALUES
('ALFKI', 0.5), --Example angle
('ANATR', 1.0),
('ANTON', 1.5),
('AROUT', 2.0),
('BERGS', 2.5)
) AS ca(CustomerID, CustomerAngle) ON c.CustomerID = ca.CustomerID-- Join to get customer angles
GROUP BY c.CustomerID, c.CompanyName, ca.CustomerAngle
ORDER BY c.CustomerID;
Create SQL query with SqlQueryBuilder 1
var (sql1, parameters1) = new SqlQueryBuilder()
.Select().Columns("c.CustomerID", "c.CompanyName", "ca.CustomerAngle")
.Column(new TAN(new Column("ca.CustomerAngle")), "TangentOfAngle")
.Column(new SUM(new ColumnArithmatic("od.Quantity").MULTIPLY("od.UnitPrice")), "TotalSales")
.From("Customers", "c")
.Join(new List<IJoin>()
{
new INNERJOIN().TableName(new Table("Orders","o"))
.On(new Column("c.CustomerID").Equale(new Column("o.CustomerID"))),
new INNERJOIN().TableName(new Table("[Order Details]","od"))
.On(new Column("o.OrderID").Equale(new Column("od.OrderID"))),
new Join(new VALUES(new List<List<object>>()
{
new List<object>(){ "ALFKI", 0.5 },
new List<object>(){ "ANATR", 1.0 },
new List<object>(){ "ANTON", 1.5 },
new List<object>(){ "AROUT", 1.0 },
new List<object>(){ "BERGS", 1.0 }
}, "ca", "CustomerID","CustomerAngle"))
.On(new Column("c.CustomerID").Equale(new Column("ca.CustomerID")))
})
.GroupBy(new GroupBy(new Column("c.CustomerID"), new Column("CompanyName"), new Column("ca.CustomerAngle")))
.OrderBy(new OrderBy().SetColumnAscending("c.CustomerID"))
.Build();
Query build by SqlQueryBuilder 1
SELECT c.CustomerID,
c.CompanyName,
ca.CustomerAngle,
TAN(ca.CustomerAngle) AS TangentOfAngle,
SUM(od.Quantity * od.UnitPrice) AS TotalSales
FROM Customers AS c
INNER JOIN
Orders AS o
ON c.CustomerID = o.CustomerID
INNER JOIN
[Order Details] AS od
ON o.OrderID = od.OrderID
INNER JOIN
(VALUES (@pMAIN_2507192104275834260, @pMAIN_2507192104275834261), (@pMAIN_2507192104275834262, @pMAIN_2507192104275834263), (@pMAIN_2507192104275834264, @pMAIN_2507192104275834265), (@pMAIN_2507192104275834266, @pMAIN_2507192104275834267), (@pMAIN_2507192104275834268, @pMAIN_2507192104275834269)) AS ca(CustomerID, CustomerAngle)
ON c.CustomerID = ca.CustomerID
GROUP BY c.CustomerID, CompanyName, ca.CustomerAngle
ORDER BY c.CustomerID ASC;
Parameters (If used)
Name |
Value |
@pMAIN_2507192104275834260 |
ALFKI |
@pMAIN_2507192104275834261 |
0.5 |
@pMAIN_2507192104275834262 |
ANATR |
@pMAIN_2507192104275834263 |
1 |
@pMAIN_2507192104275834264 |
ANTON |
@pMAIN_2507192104275834265 |
1.5 |
@pMAIN_2507192104275834266 |
AROUT |
@pMAIN_2507192104275834267 |
1 |
@pMAIN_2507192104275834268 |
BERGS |
@pMAIN_2507192104275834269 |
1 |
Query Results 1:
|
CustomerID |
CompanyName |
CustomerAngle |
TangentOfAngle |
TotalSales |
1 |
ALFKI
|
Alfreds Futterkiste
|
0.5
|
0.5463024898437905
|
4596.2
|
2 |
ANATR
|
Ana Trujillo Emparedados y helados
|
1
|
1.5574077246549023
|
1402.95
|
3 |
ANTON
|
Antonio Moreno Taquería
|
1.5
|
14.101419947171719
|
7515.35
|
4 |
AROUT
|
Around the Horn
|
1
|
1.5574077246549023
|
13806.5
|
5 |
BERGS
|
Berglunds snabbköp
|
1
|
1.5574077246549023
|
26968.15
|