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