SIGN SQL function
1. Usage of SIGN to display stock status.
SQL Server Query 1
SELECT
ProductID,
ProductName,
UnitsInStock,
ReorderLevel,
SIGN(UnitsInStock - ReorderLevel) AS StockStatus,
CASE
WHEN SIGN(UnitsInStock - ReorderLevel) = 1 THEN 'Above Reorder Level'
WHEN SIGN(UnitsInStock - ReorderLevel) = 0 THEN 'At Reorder Level'
WHEN SIGN(UnitsInStock - ReorderLevel) = -1 THEN 'Below Reorder Level'
END AS StockStatusText
FROM Products;
Create SQL query with SqlQueryBuilder 1
var (sql1, parameters1) = new SqlQueryBuilder()
.Select().Columns("ProductID", "ProductName", "UnitsInStock", "ReorderLevel")
.Column(new SIGN(new ColumnArithmatic("UnitsInStock").SUBTRACT("ReorderLevel")), "StockStatus")
.Column(new CASE()
.When(new SIGN(new ColumnArithmatic("UnitsInStock").SUBTRACT("ReorderLevel")).Equale(1))
.Then("Above Reorder Level")
.When(new SIGN(new ColumnArithmatic("UnitsInStock").SUBTRACT("ReorderLevel")).Equale(0))
.Then("At Reorder Level")
.When(new SIGN(new ColumnArithmatic("UnitsInStock").SUBTRACT("ReorderLevel")).Equale(-1))
.Then("Below Reorder Level")
.End(), "StockStatusText")
.From("Products")
.Build();
Query build by SqlQueryBuilder 1
SELECT ProductID,
ProductName,
UnitsInStock,
ReorderLevel,
SIGN(UnitsInStock - ReorderLevel) AS StockStatus,
CASE WHEN SIGN(UnitsInStock - ReorderLevel) = @pMAIN_2507192107352289430 THEN @pMAIN_2507192107352289431 WHEN SIGN(UnitsInStock - ReorderLevel) = @pMAIN_2507192107352289432 THEN @pMAIN_2507192107352289433 WHEN SIGN(UnitsInStock - ReorderLevel) = @pMAIN_2507192107352289434 THEN @pMAIN_2507192107352289435 END AS StockStatusText
FROM Products;
Parameters (If used)
Name |
Value |
@pMAIN_2507192107352289430 |
1 |
@pMAIN_2507192107352289431 |
Above Reorder Level |
@pMAIN_2507192107352289432 |
0 |
@pMAIN_2507192107352289433 |
At Reorder Level |
@pMAIN_2507192107352289434 |
-1 |
@pMAIN_2507192107352289435 |
Below Reorder Level |
Query Results 1:
|
ProductID |
ProductName |
UnitsInStock |
ReorderLevel |
StockStatus |
StockStatusText |
1 |
1
|
Chai
|
39
|
10
|
1
|
Above Reorder Level
|
2 |
2
|
Chang
|
17
|
25
|
-1
|
Below Reorder Level
|
3 |
3
|
Aniseed Syrup
|
13
|
25
|
-1
|
Below Reorder Level
|
4 |
4
|
Chef Anton's Cajun Seasoning
|
53
|
0
|
1
|
Above Reorder Level
|
5 |
5
|
Chef Anton's Gumbo Mix
|
0
|
0
|
0
|
At Reorder Level
|
6 |
6
|
Grandma's Boysenberry Spread
|
120
|
25
|
1
|
Above Reorder Level
|
7 |
7
|
Uncle Bob's Organic Dried Pears
|
15
|
10
|
1
|
Above Reorder Level
|
8 |
8
|
Northwoods Cranberry Sauce
|
6
|
0
|
1
|
Above Reorder Level
|
9 |
9
|
Mishi Kobe Niku
|
29
|
0
|
1
|
Above Reorder Level
|
10 |
10
|
Ikura
|
31
|
0
|
1
|
Above Reorder Level
|
11 |
11
|
Queso Cabrales
|
22
|
30
|
-1
|
Below Reorder Level
|
12 |
12
|
Queso Manchego La Pastora
|
86
|
0
|
1
|
Above Reorder Level
|
13 |
13
|
Konbu
|
24
|
5
|
1
|
Above Reorder Level
|
14 |
14
|
Tofu
|
35
|
0
|
1
|
Above Reorder Level
|
15 |
15
|
Genen Shouyu
|
39
|
5
|
1
|
Above Reorder Level
|
16 |
16
|
Pavlova
|
29
|
10
|
1
|
Above Reorder Level
|
17 |
17
|
Alice Mutton
|
0
|
0
|
0
|
At Reorder Level
|
18 |
18
|
Carnarvon Tigers
|
42
|
0
|
1
|
Above Reorder Level
|
19 |
19
|
Teatime Chocolate Biscuits
|
25
|
5
|
1
|
Above Reorder Level
|
20 |
20
|
Sir Rodney's Marmalade
|
40
|
0
|
1
|
Above Reorder Level
|
21 |
21
|
Sir Rodney's Scones
|
3
|
5
|
-1
|
Below Reorder Level
|
22 |
22
|
Gustaf's Knäckebröd
|
104
|
25
|
1
|
Above Reorder Level
|
23 |
23
|
Tunnbröd
|
61
|
25
|
1
|
Above Reorder Level
|
24 |
24
|
Guaraná Fantástica
|
20
|
0
|
1
|
Above Reorder Level
|
25 |
25
|
NuNuCa Nuß-Nougat-Creme
|
76
|
30
|
1
|
Above Reorder Level
|
26 |
26
|
Gumbär Gummibärchen
|
15
|
0
|
1
|
Above Reorder Level
|
27 |
27
|
Schoggi Schokolade
|
49
|
30
|
1
|
Above Reorder Level
|
28 |
28
|
Rössle Sauerkraut
|
26
|
0
|
1
|
Above Reorder Level
|
29 |
29
|
Thüringer Rostbratwurst
|
0
|
0
|
0
|
At Reorder Level
|
30 |
30
|
Nord-Ost Matjeshering
|
10
|
15
|
-1
|
Below Reorder Level
|
31 |
31
|
Gorgonzola Telino
|
0
|
20
|
-1
|
Below Reorder Level
|
32 |
32
|
Mascarpone Fabioli
|
9
|
25
|
-1
|
Below Reorder Level
|
33 |
33
|
Geitost
|
112
|
20
|
1
|
Above Reorder Level
|
34 |
34
|
Sasquatch Ale
|
111
|
15
|
1
|
Above Reorder Level
|
35 |
35
|
Steeleye Stout
|
20
|
15
|
1
|
Above Reorder Level
|
36 |
36
|
Inlagd Sill
|
112
|
20
|
1
|
Above Reorder Level
|
37 |
37
|
Gravad lax
|
11
|
25
|
-1
|
Below Reorder Level
|
38 |
38
|
Côte de Blaye
|
17
|
15
|
1
|
Above Reorder Level
|
39 |
39
|
Chartreuse verte
|
69
|
5
|
1
|
Above Reorder Level
|
40 |
40
|
Boston Crab Meat
|
123
|
30
|
1
|
Above Reorder Level
|
41 |
41
|
Jack's New England Clam Chowder
|
85
|
10
|
1
|
Above Reorder Level
|
42 |
42
|
Singaporean Hokkien Fried Mee
|
26
|
0
|
1
|
Above Reorder Level
|
43 |
43
|
Ipoh Coffee
|
17
|
25
|
-1
|
Below Reorder Level
|
44 |
44
|
Gula Malacca
|
27
|
15
|
1
|
Above Reorder Level
|
45 |
45
|
Rogede sild
|
5
|
15
|
-1
|
Below Reorder Level
|
46 |
46
|
Spegesild
|
95
|
0
|
1
|
Above Reorder Level
|
47 |
47
|
Zaanse koeken
|
36
|
0
|
1
|
Above Reorder Level
|
48 |
48
|
Chocolade
|
15
|
25
|
-1
|
Below Reorder Level
|
49 |
49
|
Maxilaku
|
10
|
15
|
-1
|
Below Reorder Level
|
50 |
50
|
Valkoinen suklaa
|
65
|
30
|
1
|
Above Reorder Level
|
51 |
51
|
Manjimup Dried Apples
|
20
|
10
|
1
|
Above Reorder Level
|
52 |
52
|
Filo Mix
|
38
|
25
|
1
|
Above Reorder Level
|
53 |
53
|
Perth Pasties
|
0
|
0
|
0
|
At Reorder Level
|
54 |
54
|
Tourtière
|
21
|
10
|
1
|
Above Reorder Level
|
55 |
55
|
Pâté chinois
|
115
|
20
|
1
|
Above Reorder Level
|
56 |
56
|
Gnocchi di nonna Alice
|
21
|
30
|
-1
|
Below Reorder Level
|
57 |
57
|
Ravioli Angelo
|
36
|
20
|
1
|
Above Reorder Level
|
58 |
58
|
Escargots de Bourgogne
|
62
|
20
|
1
|
Above Reorder Level
|
59 |
59
|
Raclette Courdavault
|
79
|
0
|
1
|
Above Reorder Level
|
60 |
60
|
Camembert Pierrot
|
19
|
0
|
1
|
Above Reorder Level
|
61 |
61
|
Sirop d'érable
|
113
|
25
|
1
|
Above Reorder Level
|
62 |
62
|
Tarte au sucre
|
17
|
0
|
1
|
Above Reorder Level
|
63 |
63
|
Vegie-spread
|
24
|
5
|
1
|
Above Reorder Level
|
64 |
64
|
Wimmers gute Semmelknödel
|
22
|
30
|
-1
|
Below Reorder Level
|
65 |
65
|
Louisiana Fiery Hot Pepper Sauce
|
76
|
0
|
1
|
Above Reorder Level
|
66 |
66
|
Louisiana Hot Spiced Okra
|
4
|
20
|
-1
|
Below Reorder Level
|
67 |
67
|
Laughing Lumberjack Lager
|
52
|
10
|
1
|
Above Reorder Level
|
68 |
68
|
Scottish Longbreads
|
6
|
15
|
-1
|
Below Reorder Level
|
69 |
69
|
Gudbrandsdalsost
|
26
|
15
|
1
|
Above Reorder Level
|
70 |
70
|
Outback Lager
|
15
|
30
|
-1
|
Below Reorder Level
|
71 |
71
|
Flotemysost
|
26
|
0
|
1
|
Above Reorder Level
|
72 |
72
|
Mozzarella di Giovanni
|
14
|
0
|
1
|
Above Reorder Level
|
73 |
73
|
Röd Kaviar
|
101
|
5
|
1
|
Above Reorder Level
|
74 |
74
|
Longlife Tofu
|
4
|
5
|
-1
|
Below Reorder Level
|
75 |
75
|
Rhönbräu Klosterbier
|
125
|
25
|
1
|
Above Reorder Level
|
76 |
76
|
Lakkalikööri
|
57
|
20
|
1
|
Above Reorder Level
|
77 |
77
|
Original Frankfurter grüne Soße
|
32
|
15
|
1
|
Above Reorder Level
|
2. Usage of SIGN to display price trend status.
SQL Server Query 2
WITH PriceHistory AS (
SELECT
ProductID,
ProductName,
UnitPrice,
LAG(UnitPrice, 1, UnitPrice) OVER (PARTITION BY ProductID ORDER BY ProductID) AS PreviousUnitPrice
FROM Products
)
SELECT
ProductID,
ProductName,
UnitPrice,
PreviousUnitPrice,
SIGN(UnitPrice - PreviousUnitPrice) AS PriceTrend,
CASE
WHEN SIGN(UnitPrice - PreviousUnitPrice) = 1 THEN 'Increasing'
WHEN SIGN(UnitPrice - PreviousUnitPrice) = 0 THEN 'No Change'
WHEN SIGN(UnitPrice - PreviousUnitPrice) = -1 THEN 'Decreasing'
END AS PriceTrendStatus
FROM PriceHistory
ORDER BY ProductID;
Create SQL query with SqlQueryBuilder 2
var (sql2, parameters2) = new SqlQueryBuilder()
.WithCTETable(new Table("PriceHistory"), new SqlQueryBuilder()
.Select().Columns("ProductID", "ProductName", "UnitPrice")
.Column(new LAG(new Column("UnitPrice"), 1, new Column("UnitPrice")).PARTITION_BY(new Column("ProductID"))
.ORDER_BY(new OrderBy().Set(new Column("ProductID"))), "PreviousUnitPrice")
.From("Products")
)
.Select().Columns("ProductID", "ProductName", "UnitPrice", "PreviousUnitPrice")
.Column(new SIGN(new ColumnArithmatic("UnitPrice").SUBTRACT("PreviousUnitPrice")), "PriceTrend")
.Column(new CASE()
.When(new SIGN(new ColumnArithmatic("UnitPrice").SUBTRACT("PreviousUnitPrice")).Equale(1))
.Then("Increasing")
.When(new SIGN(new ColumnArithmatic("UnitPrice").SUBTRACT("PreviousUnitPrice")).Equale(0))
.Then("No Change")
.When(new SIGN(new ColumnArithmatic("UnitPrice").SUBTRACT("PreviousUnitPrice")).Equale(1))
.Then("Decreasing")
.End(), "PriceTrendStatus")
.From("PriceHistory")
.OrderBy(new OrderBy().Set(new Column("ProductID")))
.Build();
Query build by SqlQueryBuilder 2
WITH PriceHistory
AS (SELECT ProductID,
ProductName,
UnitPrice,
LAG(UnitPrice, @pMAIN_2507192107352377370, UnitPrice) OVER (PARTITION BY ProductID ORDER BY ProductID ASC) AS PreviousUnitPrice
FROM Products)
SELECT ProductID,
ProductName,
UnitPrice,
PreviousUnitPrice,
SIGN(UnitPrice - PreviousUnitPrice) AS PriceTrend,
CASE WHEN SIGN(UnitPrice - PreviousUnitPrice) = @pMAIN_2507192107352377371 THEN @pMAIN_2507192107352377372 WHEN SIGN(UnitPrice - PreviousUnitPrice) = @pMAIN_2507192107352377373 THEN @pMAIN_2507192107352377374 WHEN SIGN(UnitPrice - PreviousUnitPrice) = @pMAIN_2507192107352377375 THEN @pMAIN_2507192107352377376 END AS PriceTrendStatus
FROM PriceHistory
ORDER BY ProductID ASC;
Parameters (If used)
Name |
Value |
@pMAIN_2507192107352377370 |
1 |
@pMAIN_2507192107352377371 |
1 |
@pMAIN_2507192107352377372 |
Increasing |
@pMAIN_2507192107352377373 |
0 |
@pMAIN_2507192107352377374 |
No Change |
@pMAIN_2507192107352377375 |
1 |
@pMAIN_2507192107352377376 |
Decreasing |
Query Results 2:
|
ProductID |
ProductName |
UnitPrice |
PreviousUnitPrice |
PriceTrend |
PriceTrendStatus |
1 |
1
|
Chai
|
18.0000
|
18.0000
|
0.0000
|
No Change
|
2 |
2
|
Chang
|
19.0000
|
19.0000
|
0.0000
|
No Change
|
3 |
3
|
Aniseed Syrup
|
10.0000
|
10.0000
|
0.0000
|
No Change
|
4 |
4
|
Chef Anton's Cajun Seasoning
|
22.0000
|
22.0000
|
0.0000
|
No Change
|
5 |
5
|
Chef Anton's Gumbo Mix
|
21.3500
|
21.3500
|
0.0000
|
No Change
|
6 |
6
|
Grandma's Boysenberry Spread
|
25.0000
|
25.0000
|
0.0000
|
No Change
|
7 |
7
|
Uncle Bob's Organic Dried Pears
|
30.0000
|
30.0000
|
0.0000
|
No Change
|
8 |
8
|
Northwoods Cranberry Sauce
|
40.0000
|
40.0000
|
0.0000
|
No Change
|
9 |
9
|
Mishi Kobe Niku
|
97.0000
|
97.0000
|
0.0000
|
No Change
|
10 |
10
|
Ikura
|
31.0000
|
31.0000
|
0.0000
|
No Change
|
11 |
11
|
Queso Cabrales
|
21.0000
|
21.0000
|
0.0000
|
No Change
|
12 |
12
|
Queso Manchego La Pastora
|
38.0000
|
38.0000
|
0.0000
|
No Change
|
13 |
13
|
Konbu
|
6.0000
|
6.0000
|
0.0000
|
No Change
|
14 |
14
|
Tofu
|
23.2500
|
23.2500
|
0.0000
|
No Change
|
15 |
15
|
Genen Shouyu
|
15.5000
|
15.5000
|
0.0000
|
No Change
|
16 |
16
|
Pavlova
|
17.4500
|
17.4500
|
0.0000
|
No Change
|
17 |
17
|
Alice Mutton
|
39.0000
|
39.0000
|
0.0000
|
No Change
|
18 |
18
|
Carnarvon Tigers
|
62.5000
|
62.5000
|
0.0000
|
No Change
|
19 |
19
|
Teatime Chocolate Biscuits
|
9.2000
|
9.2000
|
0.0000
|
No Change
|
20 |
20
|
Sir Rodney's Marmalade
|
81.0000
|
81.0000
|
0.0000
|
No Change
|
21 |
21
|
Sir Rodney's Scones
|
10.0000
|
10.0000
|
0.0000
|
No Change
|
22 |
22
|
Gustaf's Knäckebröd
|
21.0000
|
21.0000
|
0.0000
|
No Change
|
23 |
23
|
Tunnbröd
|
9.0000
|
9.0000
|
0.0000
|
No Change
|
24 |
24
|
Guaraná Fantástica
|
4.5000
|
4.5000
|
0.0000
|
No Change
|
25 |
25
|
NuNuCa Nuß-Nougat-Creme
|
14.0000
|
14.0000
|
0.0000
|
No Change
|
26 |
26
|
Gumbär Gummibärchen
|
31.2300
|
31.2300
|
0.0000
|
No Change
|
27 |
27
|
Schoggi Schokolade
|
43.9000
|
43.9000
|
0.0000
|
No Change
|
28 |
28
|
Rössle Sauerkraut
|
45.6000
|
45.6000
|
0.0000
|
No Change
|
29 |
29
|
Thüringer Rostbratwurst
|
123.7900
|
123.7900
|
0.0000
|
No Change
|
30 |
30
|
Nord-Ost Matjeshering
|
25.8900
|
25.8900
|
0.0000
|
No Change
|
31 |
31
|
Gorgonzola Telino
|
12.5000
|
12.5000
|
0.0000
|
No Change
|
32 |
32
|
Mascarpone Fabioli
|
32.0000
|
32.0000
|
0.0000
|
No Change
|
33 |
33
|
Geitost
|
2.5000
|
2.5000
|
0.0000
|
No Change
|
34 |
34
|
Sasquatch Ale
|
14.0000
|
14.0000
|
0.0000
|
No Change
|
35 |
35
|
Steeleye Stout
|
18.0000
|
18.0000
|
0.0000
|
No Change
|
36 |
36
|
Inlagd Sill
|
19.0000
|
19.0000
|
0.0000
|
No Change
|
37 |
37
|
Gravad lax
|
26.0000
|
26.0000
|
0.0000
|
No Change
|
38 |
38
|
Côte de Blaye
|
263.5000
|
263.5000
|
0.0000
|
No Change
|
39 |
39
|
Chartreuse verte
|
18.0000
|
18.0000
|
0.0000
|
No Change
|
40 |
40
|
Boston Crab Meat
|
18.4000
|
18.4000
|
0.0000
|
No Change
|
41 |
41
|
Jack's New England Clam Chowder
|
9.6500
|
9.6500
|
0.0000
|
No Change
|
42 |
42
|
Singaporean Hokkien Fried Mee
|
14.0000
|
14.0000
|
0.0000
|
No Change
|
43 |
43
|
Ipoh Coffee
|
46.0000
|
46.0000
|
0.0000
|
No Change
|
44 |
44
|
Gula Malacca
|
19.4500
|
19.4500
|
0.0000
|
No Change
|
45 |
45
|
Rogede sild
|
9.5000
|
9.5000
|
0.0000
|
No Change
|
46 |
46
|
Spegesild
|
12.0000
|
12.0000
|
0.0000
|
No Change
|
47 |
47
|
Zaanse koeken
|
9.5000
|
9.5000
|
0.0000
|
No Change
|
48 |
48
|
Chocolade
|
12.7500
|
12.7500
|
0.0000
|
No Change
|
49 |
49
|
Maxilaku
|
20.0000
|
20.0000
|
0.0000
|
No Change
|
50 |
50
|
Valkoinen suklaa
|
16.2500
|
16.2500
|
0.0000
|
No Change
|
51 |
51
|
Manjimup Dried Apples
|
53.0000
|
53.0000
|
0.0000
|
No Change
|
52 |
52
|
Filo Mix
|
7.0000
|
7.0000
|
0.0000
|
No Change
|
53 |
53
|
Perth Pasties
|
32.8000
|
32.8000
|
0.0000
|
No Change
|
54 |
54
|
Tourtière
|
7.4500
|
7.4500
|
0.0000
|
No Change
|
55 |
55
|
Pâté chinois
|
24.0000
|
24.0000
|
0.0000
|
No Change
|
56 |
56
|
Gnocchi di nonna Alice
|
38.0000
|
38.0000
|
0.0000
|
No Change
|
57 |
57
|
Ravioli Angelo
|
19.5000
|
19.5000
|
0.0000
|
No Change
|
58 |
58
|
Escargots de Bourgogne
|
13.2500
|
13.2500
|
0.0000
|
No Change
|
59 |
59
|
Raclette Courdavault
|
55.0000
|
55.0000
|
0.0000
|
No Change
|
60 |
60
|
Camembert Pierrot
|
34.0000
|
34.0000
|
0.0000
|
No Change
|
61 |
61
|
Sirop d'érable
|
28.5000
|
28.5000
|
0.0000
|
No Change
|
62 |
62
|
Tarte au sucre
|
49.3000
|
49.3000
|
0.0000
|
No Change
|
63 |
63
|
Vegie-spread
|
43.9000
|
43.9000
|
0.0000
|
No Change
|
64 |
64
|
Wimmers gute Semmelknödel
|
33.2500
|
33.2500
|
0.0000
|
No Change
|
65 |
65
|
Louisiana Fiery Hot Pepper Sauce
|
21.0500
|
21.0500
|
0.0000
|
No Change
|
66 |
66
|
Louisiana Hot Spiced Okra
|
17.0000
|
17.0000
|
0.0000
|
No Change
|
67 |
67
|
Laughing Lumberjack Lager
|
14.0000
|
14.0000
|
0.0000
|
No Change
|
68 |
68
|
Scottish Longbreads
|
12.5000
|
12.5000
|
0.0000
|
No Change
|
69 |
69
|
Gudbrandsdalsost
|
36.0000
|
36.0000
|
0.0000
|
No Change
|
70 |
70
|
Outback Lager
|
15.0000
|
15.0000
|
0.0000
|
No Change
|
71 |
71
|
Flotemysost
|
21.5000
|
21.5000
|
0.0000
|
No Change
|
72 |
72
|
Mozzarella di Giovanni
|
34.8000
|
34.8000
|
0.0000
|
No Change
|
73 |
73
|
Röd Kaviar
|
15.0000
|
15.0000
|
0.0000
|
No Change
|
74 |
74
|
Longlife Tofu
|
10.0000
|
10.0000
|
0.0000
|
No Change
|
75 |
75
|
Rhönbräu Klosterbier
|
7.7500
|
7.7500
|
0.0000
|
No Change
|
76 |
76
|
Lakkalikööri
|
18.0000
|
18.0000
|
0.0000
|
No Change
|
77 |
77
|
Original Frankfurter grüne Soße
|
13.0000
|
13.0000
|
0.0000
|
No Change
|