Other ATAN SQL function
1. Usage of ATAN to show directions in radians and degree
SQL Server Query 1
WITH CustomerCoordinates AS (
SELECT
CustomerID,
CompanyName,
-- Simulated Latitude/Longitude difference from the central point
(47.6062 + (ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) * 0.5)) - 47.6062 AS LatitudeDifference,
(-122.3321 + (ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) * 0.8)) - -122.3321 AS LongitudeDifference
FROM Customers
),
DirectionCalculation AS (
SELECT
CustomerID,
CompanyName,
LatitudeDifference,
LongitudeDifference,
-- Calculate a simplified direction using ATAN
ATAN(LongitudeDifference / LatitudeDifference) AS DirectionInRadians,
DEGREES(ATAN(LongitudeDifference / LatitudeDifference)) AS DirectionInDegrees
FROM CustomerCoordinates
)
SELECT
CustomerID,
CompanyName,
DirectionInRadians,
DirectionInDegrees
FROM DirectionCalculation
ORDER BY DirectionInDegrees;
Create SQL query with SqlQueryBuilder 1
var (sql1, parameters1) = new SqlQueryBuilder()
.WithCTETable(new Table("CustomerCoordinates"), new SqlQueryBuilder()
.Select()
.Columns("CustomerID", "CompanyName")
.Column(new ColumnArithmatic()
.StartBracket()
.Value(47.6062).ADD()
.StartBracket()
.SqlFunction(new ROW_NUMBER().ORDER_BY(new OrderBy().SetSelectNull()))
.EndBracket().MULTIPLY().Value(0.5)
.EndBracket().SUBTRACT().Value(47.6062)
, "LatitudeDifference")
.Column(new ColumnArithmatic()
.StartBracket()
.Value(-122.3321).ADD()
.StartBracket()
.SqlFunction(new ROW_NUMBER().ORDER_BY(new OrderBy().SetSelectNull()))
.EndBracket().MULTIPLY().Value(0.8)
.EndBracket().SUBTRACT().Value(-122.3321)
, "LongitudeDifference")
.From("Customers")
)
.WithCTETable(new Table("DirectionCalculation"), new SqlQueryBuilder()
.Select()
.Columns("CustomerID", "CompanyName", "LatitudeDifference", "LongitudeDifference")
.Column(new ATAN(new ColumnArithmatic().Column("LongitudeDifference").DIVIDE().Column("LatitudeDifference"))
, "DirectionInRadians")
.Column(new DEGREES(new ATAN(new ColumnArithmatic().Column("LongitudeDifference").DIVIDE().Column("LatitudeDifference")))
, "DirectionInDegrees")
.From("CustomerCoordinates")
)
.Select()
.Columns("CustomerID", "CompanyName", "DirectionInRadians", "DirectionInDegrees")
.From("DirectionCalculation")
.OrderBy(new OrderBy().Set(new Column("DirectionInDegrees")))
.Build();
Query build by SqlQueryBuilder 1
WITH CustomerCoordinates
AS (SELECT CustomerID,
CompanyName,
(@pMAIN_2512060919572231480 + (ROW_NUMBER() OVER (ORDER BY (SELECT NULL))) * @pMAIN_2512060919572231481) - @pMAIN_2512060919572231482 AS LatitudeDifference,
(@pMAIN_2512060919572231483 + (ROW_NUMBER() OVER (ORDER BY (SELECT NULL))) * @pMAIN_2512060919572231484) - @pMAIN_2512060919572231485 AS LongitudeDifference
FROM Customers),
DirectionCalculation
AS (SELECT CustomerID,
CompanyName,
LatitudeDifference,
LongitudeDifference,
ATAN(LongitudeDifference / LatitudeDifference) AS DirectionInRadians,
DEGREES(ATAN(LongitudeDifference / LatitudeDifference)) AS DirectionInDegrees
FROM CustomerCoordinates)
SELECT CustomerID,
CompanyName,
DirectionInRadians,
DirectionInDegrees
FROM DirectionCalculation
ORDER BY DirectionInDegrees ASC;
Parameters (If used)
| Name |
Value |
| @pMAIN_2512060919572231480 |
47.6062 |
| @pMAIN_2512060919572231481 |
0.5 |
| @pMAIN_2512060919572231482 |
47.6062 |
| @pMAIN_2512060919572231483 |
-122.3321 |
| @pMAIN_2512060919572231484 |
0.8 |
| @pMAIN_2512060919572231485 |
-122.3321 |
Query Results 1:
| |
CustomerID |
CompanyName |
DirectionInRadians |
DirectionInDegrees |
| 1 |
ALFKI
|
Alfreds Futterkiste
|
1.0121970114513326
|
57.994616791916414
|
| 2 |
ANATR
|
Ana Trujillo Emparedados y helados
|
1.0121970114513326
|
57.994616791916414
|
| 3 |
BLONP
|
Blondesddsl père et fils
|
1.0121970114513337
|
57.99461679191648
|
| 4 |
BLAUS
|
Blauer See Delikatessen
|
1.012197011451334
|
57.99461679191649
|
| 5 |
CACTU
|
Cactus Comidas para llevar
|
1.012197011451334
|
57.99461679191649
|
| 6 |
BOTTM
|
Bottom-Dollar Markets
|
1.0121970114513341
|
57.9946167919165
|
| 7 |
BSBEV
|
B's Beverages
|
1.0121970114513341
|
57.9946167919165
|
| 8 |
COMMI
|
Comércio Mineiro
|
1.0121970114513341
|
57.9946167919165
|
| 9 |
CONSH
|
Consolidated Holdings
|
1.0121970114513341
|
57.9946167919165
|
| 10 |
WANDK
|
Die Wandernde Kuh
|
1.0121970114513341
|
57.9946167919165
|
| 11 |
BERGS
|
Berglunds snabbköp
|
1.0121970114513341
|
57.9946167919165
|
| 12 |
EASTC
|
Eastern Connection
|
1.0121970114513341
|
57.9946167919165
|
| 13 |
ERNSH
|
Ernst Handel
|
1.0121970114513341
|
57.9946167919165
|
| 14 |
FAMIA
|
Familia Arquibaldo
|
1.0121970114513341
|
57.9946167919165
|
| 15 |
FOLKO
|
Folk och fä HB
|
1.0121970114513341
|
57.9946167919165
|
| 16 |
FRANR
|
France restauration
|
1.0121970114513341
|
57.9946167919165
|
| 17 |
FRANS
|
Franchi S.p.A.
|
1.0121970114513341
|
57.9946167919165
|
| 18 |
FURIB
|
Furia Bacalhau e Frutos do Mar
|
1.0121970114513341
|
57.9946167919165
|
| 19 |
GALED
|
Galería del gastrónomo
|
1.0121970114513341
|
57.9946167919165
|
| 20 |
GODOS
|
Godos Cocina Típica
|
1.0121970114513341
|
57.9946167919165
|
| 21 |
GOURL
|
Gourmet Lanchonetes
|
1.0121970114513341
|
57.9946167919165
|
| 22 |
GROSR
|
GROSELLA-Restaurante
|
1.0121970114513341
|
57.9946167919165
|
| 23 |
HANAR
|
Hanari Carnes
|
1.0121970114513341
|
57.9946167919165
|
| 24 |
HILAA
|
HILARION-Abastos
|
1.0121970114513341
|
57.9946167919165
|
| 25 |
HUNGC
|
Hungry Coyote Import Store
|
1.0121970114513341
|
57.9946167919165
|
| 26 |
ISLAT
|
Island Trading
|
1.0121970114513341
|
57.9946167919165
|
| 27 |
KOENE
|
Königlich Essen
|
1.0121970114513341
|
57.9946167919165
|
| 28 |
LAMAI
|
La maison d'Asie
|
1.0121970114513341
|
57.9946167919165
|
| 29 |
LAZYK
|
Lazy K Kountry Store
|
1.0121970114513341
|
57.9946167919165
|
| 30 |
LEHMS
|
Lehmanns Marktstand
|
1.0121970114513341
|
57.9946167919165
|
| 31 |
LILAS
|
LILA-Supermercado
|
1.0121970114513341
|
57.9946167919165
|
| 32 |
LONEP
|
Lonesome Pine Restaurant
|
1.0121970114513341
|
57.9946167919165
|
| 33 |
MAGAA
|
Magazzini Alimentari Riuniti
|
1.0121970114513341
|
57.9946167919165
|
| 34 |
MEREP
|
Mère Paillarde
|
1.0121970114513341
|
57.9946167919165
|
| 35 |
OTTIK
|
Ottilies Käseladen
|
1.0121970114513341
|
57.9946167919165
|
| 36 |
PARIS
|
Paris spécialités
|
1.0121970114513341
|
57.9946167919165
|
| 37 |
PERIC
|
Pericles Comidas clásicas
|
1.0121970114513341
|
57.9946167919165
|
| 38 |
PICCO
|
Piccolo und mehr
|
1.0121970114513341
|
57.9946167919165
|
| 39 |
QUEDE
|
Que Delícia
|
1.0121970114513341
|
57.9946167919165
|
| 40 |
QUEEN
|
Queen Cozinha
|
1.0121970114513341
|
57.9946167919165
|
| 41 |
QUICK
|
QUICK-Stop
|
1.0121970114513341
|
57.9946167919165
|
| 42 |
RANCH
|
Rancho grande
|
1.0121970114513341
|
57.9946167919165
|
| 43 |
REGGC
|
Reggiani Caseifici
|
1.0121970114513341
|
57.9946167919165
|
| 44 |
RICAR
|
Ricardo Adocicados
|
1.0121970114513341
|
57.9946167919165
|
| 45 |
RICSU
|
Richter Supermarkt
|
1.0121970114513341
|
57.9946167919165
|
| 46 |
ROMEY
|
Romero y tomillo
|
1.0121970114513341
|
57.9946167919165
|
| 47 |
SAVEA
|
Save-a-lot Markets
|
1.0121970114513341
|
57.9946167919165
|
| 48 |
SEVES
|
Seven Seas Imports
|
1.0121970114513341
|
57.9946167919165
|
| 49 |
SIMOB
|
Simons bistro
|
1.0121970114513341
|
57.9946167919165
|
| 50 |
SPECD
|
Spécialités du monde
|
1.0121970114513341
|
57.9946167919165
|
| 51 |
SPLIR
|
Split Rail Beer & Ale
|
1.0121970114513341
|
57.9946167919165
|
| 52 |
SUPRD
|
Suprêmes délices
|
1.0121970114513341
|
57.9946167919165
|
| 53 |
THEBI
|
The Big Cheese
|
1.0121970114513341
|
57.9946167919165
|
| 54 |
THECR
|
The Cracker Box
|
1.0121970114513341
|
57.9946167919165
|
| 55 |
TOMSP
|
Toms Spezialitäten
|
1.0121970114513341
|
57.9946167919165
|
| 56 |
TORTU
|
Tortuga Restaurante
|
1.0121970114513341
|
57.9946167919165
|
| 57 |
TRAIH
|
Trail's Head Gourmet Provisioners
|
1.0121970114513341
|
57.9946167919165
|
| 58 |
VAFFE
|
Vaffeljernet
|
1.0121970114513341
|
57.9946167919165
|
| 59 |
VICTE
|
Victuailles en stock
|
1.0121970114513341
|
57.9946167919165
|
| 60 |
VINET
|
Vins et alcools Chevalier
|
1.0121970114513341
|
57.9946167919165
|
| 61 |
WARTH
|
Wartian Herkku
|
1.0121970114513341
|
57.9946167919165
|
| 62 |
WELLI
|
Wellington Importadora
|
1.0121970114513341
|
57.9946167919165
|
| 63 |
WHITC
|
White Clover Markets
|
1.0121970114513341
|
57.9946167919165
|
| 64 |
WILMK
|
Wilman Kala
|
1.0121970114513341
|
57.9946167919165
|
| 65 |
WOLZA
|
Wolski Zajazd
|
1.0121970114513341
|
57.9946167919165
|
| 66 |
NORTS
|
North/South
|
1.0121970114513341
|
57.9946167919165
|
| 67 |
OCEAN
|
Océano Atlántico Ltda.
|
1.0121970114513341
|
57.9946167919165
|
| 68 |
OLDWO
|
Old World Delicatessen
|
1.0121970114513343
|
57.99461679191651
|
| 69 |
CHOPS
|
Chop-suey Chinese
|
1.0121970114513343
|
57.99461679191651
|
| 70 |
TRADH
|
Tradição Hipermercados
|
1.0121970114513343
|
57.99461679191651
|
| 71 |
SANTG
|
Santé Gourmet
|
1.0121970114513343
|
57.99461679191651
|
| 72 |
RATTC
|
Rattlesnake Canyon Grocery
|
1.0121970114513343
|
57.99461679191651
|
| 73 |
PRINI
|
Princesa Isabel Vinhos
|
1.0121970114513343
|
57.99461679191651
|
| 74 |
MORGK
|
Morgenstern Gesundkost
|
1.0121970114513343
|
57.99461679191651
|
| 75 |
MAISD
|
Maison Dewey
|
1.0121970114513343
|
57.99461679191651
|
| 76 |
LINOD
|
LINO-Delicateses
|
1.0121970114513343
|
57.99461679191651
|
| 77 |
LETSS
|
Let's Stop N Shop
|
1.0121970114513343
|
57.99461679191651
|
| 78 |
LAUGB
|
Laughing Bacchus Wine Cellars
|
1.0121970114513343
|
57.99461679191651
|
| 79 |
LACOR
|
La corne d'abondance
|
1.0121970114513343
|
57.99461679191651
|
| 80 |
HUNGO
|
Hungry Owl All-Night Grocers
|
1.0121970114513343
|
57.99461679191651
|
| 81 |
GREAL
|
Great Lakes Food Market
|
1.0121970114513343
|
57.99461679191651
|
| 82 |
FRANK
|
Frankenversand
|
1.0121970114513343
|
57.99461679191651
|
| 83 |
FISSA
|
FISSA Fabrica Inter. Salchichas S.A.
|
1.0121970114513343
|
57.99461679191651
|
| 84 |
FOLIG
|
Folies gourmandes
|
1.0121970114513343
|
57.99461679191651
|
| 85 |
BONAP
|
Bon app'
|
1.0121970114513343
|
57.99461679191651
|
| 86 |
DRACD
|
Drachenblut Delikatessen
|
1.0121970114513343
|
57.99461679191651
|
| 87 |
DUMON
|
Du monde entier
|
1.0121970114513343
|
57.99461679191651
|
| 88 |
CENTC
|
Centro comercial Moctezuma
|
1.0121970114513346
|
57.99461679191653
|
| 89 |
BOLID
|
Bólido Comidas preparadas
|
1.0121970114513346
|
57.99461679191653
|
| 90 |
AROUT
|
Around the Horn
|
1.0121970114513346
|
57.99461679191653
|
| 91 |
ANTON
|
Antonio Moreno Taquería
|
1.0121970114513352
|
57.99461679191656
|