ISNULL SQL function
1. Usage of ISNULL to show Stock Status and Quantity that needs to be order.
SQL Server Query 1
SELECT
ProductID,
ProductName,
UnitsInStock,
UnitsOnOrder,
ReorderLevel,
StockStatus =
CASE
WHEN UnitsInStock > 0 THEN 'In Stock'
ELSE 'Out of Stock'
END,
-- Prioritize UnitsOnOrder, then ReorderLevel, then 0
QuantityToOrder = ISNULL(COALESCE(UnitsOnOrder, ReorderLevel), 0)
FROM Products
ORDER BY ProductID;
Create SQL query with SqlQueryBuilder 1
var (sql1, parameters1) = new SqlQueryBuilder()
.Select()
.Columns("ProductID", "ProductName", "UnitsInStock", "UnitsOnOrder", "ReorderLevel")
.Column(new CASE()
.When(new Column("UnitsInStock").GreaterThan(0))
.Then("In Stock").Else("Out Of Stock")
, "StockStatus")
.Column(new ISNULL(new COALESCE(new Column("UnitsOnOrder"), new Column("ReorderLevel")), 0), "QuantityToOrder")
.From("Products")
.OrderBy(new OrderBy().Set(new Column("ProductID")))
.Build();
Query build by SqlQueryBuilder 1
SELECT ProductID,
ProductName,
UnitsInStock,
UnitsOnOrder,
ReorderLevel,
CASE WHEN UnitsInStock > @pMAIN_2512060922051035590 THEN @pMAIN_2512060922051035591 ELSE @pMAIN_2512060922051035592 END AS StockStatus,
ISNULL(COALESCE (UnitsOnOrder, ReorderLevel), @pMAIN_2512060922051035593) AS QuantityToOrder
FROM Products
ORDER BY ProductID ASC;
Parameters (If used)
| Name |
Value |
| @pMAIN_2512060922051035590 |
0 |
| @pMAIN_2512060922051035591 |
In Stock |
| @pMAIN_2512060922051035592 |
Out Of Stock |
| @pMAIN_2512060922051035593 |
0 |
Query Results 1:
| |
ProductID |
ProductName |
UnitInStock |
UnitsOnOrder |
ReorderLevel |
StockStatus |
QuantityToOrder |
| 1 |
1
|
Chai
|
0
|
0
|
10
|
In Stock
|
0
|
| 2 |
2
|
Chang
|
0
|
40
|
25
|
In Stock
|
40
|
| 3 |
3
|
Aniseed Syrup
|
0
|
70
|
25
|
In Stock
|
70
|
| 4 |
4
|
Chef Anton's Cajun Seasoning
|
0
|
0
|
0
|
In Stock
|
0
|
| 5 |
5
|
Chef Anton's Gumbo Mix
|
0
|
0
|
0
|
Out Of Stock
|
0
|
| 6 |
6
|
Grandma's Boysenberry Spread
|
0
|
0
|
25
|
In Stock
|
0
|
| 7 |
7
|
Uncle Bob's Organic Dried Pears
|
0
|
0
|
10
|
In Stock
|
0
|
| 8 |
8
|
Northwoods Cranberry Sauce
|
0
|
0
|
0
|
In Stock
|
0
|
| 9 |
9
|
Mishi Kobe Niku
|
0
|
0
|
0
|
In Stock
|
0
|
| 10 |
10
|
Ikura
|
0
|
0
|
0
|
In Stock
|
0
|
| 11 |
11
|
Queso Cabrales
|
0
|
30
|
30
|
In Stock
|
30
|
| 12 |
12
|
Queso Manchego La Pastora
|
0
|
0
|
0
|
In Stock
|
0
|
| 13 |
13
|
Konbu
|
0
|
0
|
5
|
In Stock
|
0
|
| 14 |
14
|
Tofu
|
0
|
0
|
0
|
In Stock
|
0
|
| 15 |
15
|
Genen Shouyu
|
0
|
0
|
5
|
In Stock
|
0
|
| 16 |
16
|
Pavlova
|
0
|
0
|
10
|
In Stock
|
0
|
| 17 |
17
|
Alice Mutton
|
0
|
0
|
0
|
Out Of Stock
|
0
|
| 18 |
18
|
Carnarvon Tigers
|
0
|
0
|
0
|
In Stock
|
0
|
| 19 |
19
|
Teatime Chocolate Biscuits
|
0
|
0
|
5
|
In Stock
|
0
|
| 20 |
20
|
Sir Rodney's Marmalade
|
0
|
0
|
0
|
In Stock
|
0
|
| 21 |
21
|
Sir Rodney's Scones
|
0
|
40
|
5
|
In Stock
|
40
|
| 22 |
22
|
Gustaf's Knäckebröd
|
0
|
0
|
25
|
In Stock
|
0
|
| 23 |
23
|
Tunnbröd
|
0
|
0
|
25
|
In Stock
|
0
|
| 24 |
24
|
Guaraná Fantástica
|
0
|
0
|
0
|
In Stock
|
0
|
| 25 |
25
|
NuNuCa Nuß-Nougat-Creme
|
0
|
0
|
30
|
In Stock
|
0
|
| 26 |
26
|
Gumbär Gummibärchen
|
0
|
0
|
0
|
In Stock
|
0
|
| 27 |
27
|
Schoggi Schokolade
|
0
|
0
|
30
|
In Stock
|
0
|
| 28 |
28
|
Rössle Sauerkraut
|
0
|
0
|
0
|
In Stock
|
0
|
| 29 |
29
|
Thüringer Rostbratwurst
|
0
|
0
|
0
|
Out Of Stock
|
0
|
| 30 |
30
|
Nord-Ost Matjeshering
|
0
|
0
|
15
|
In Stock
|
0
|
| 31 |
31
|
Gorgonzola Telino
|
0
|
70
|
20
|
Out Of Stock
|
70
|
| 32 |
32
|
Mascarpone Fabioli
|
0
|
40
|
25
|
In Stock
|
40
|
| 33 |
33
|
Geitost
|
0
|
0
|
20
|
In Stock
|
0
|
| 34 |
34
|
Sasquatch Ale
|
0
|
0
|
15
|
In Stock
|
0
|
| 35 |
35
|
Steeleye Stout
|
0
|
0
|
15
|
In Stock
|
0
|
| 36 |
36
|
Inlagd Sill
|
0
|
0
|
20
|
In Stock
|
0
|
| 37 |
37
|
Gravad lax
|
0
|
50
|
25
|
In Stock
|
50
|
| 38 |
38
|
Côte de Blaye
|
0
|
0
|
15
|
In Stock
|
0
|
| 39 |
39
|
Chartreuse verte
|
0
|
0
|
5
|
In Stock
|
0
|
| 40 |
40
|
Boston Crab Meat
|
0
|
0
|
30
|
In Stock
|
0
|
| 41 |
41
|
Jack's New England Clam Chowder
|
0
|
0
|
10
|
In Stock
|
0
|
| 42 |
42
|
Singaporean Hokkien Fried Mee
|
0
|
0
|
0
|
In Stock
|
0
|
| 43 |
43
|
Ipoh Coffee
|
0
|
10
|
25
|
In Stock
|
10
|
| 44 |
44
|
Gula Malacca
|
0
|
0
|
15
|
In Stock
|
0
|
| 45 |
45
|
Rogede sild
|
0
|
70
|
15
|
In Stock
|
70
|
| 46 |
46
|
Spegesild
|
0
|
0
|
0
|
In Stock
|
0
|
| 47 |
47
|
Zaanse koeken
|
0
|
0
|
0
|
In Stock
|
0
|
| 48 |
48
|
Chocolade
|
0
|
70
|
25
|
In Stock
|
70
|
| 49 |
49
|
Maxilaku
|
0
|
60
|
15
|
In Stock
|
60
|
| 50 |
50
|
Valkoinen suklaa
|
0
|
0
|
30
|
In Stock
|
0
|
| 51 |
51
|
Manjimup Dried Apples
|
0
|
0
|
10
|
In Stock
|
0
|
| 52 |
52
|
Filo Mix
|
0
|
0
|
25
|
In Stock
|
0
|
| 53 |
53
|
Perth Pasties
|
0
|
0
|
0
|
Out Of Stock
|
0
|
| 54 |
54
|
Tourtière
|
0
|
0
|
10
|
In Stock
|
0
|
| 55 |
55
|
Pâté chinois
|
0
|
0
|
20
|
In Stock
|
0
|
| 56 |
56
|
Gnocchi di nonna Alice
|
0
|
10
|
30
|
In Stock
|
10
|
| 57 |
57
|
Ravioli Angelo
|
0
|
0
|
20
|
In Stock
|
0
|
| 58 |
58
|
Escargots de Bourgogne
|
0
|
0
|
20
|
In Stock
|
0
|
| 59 |
59
|
Raclette Courdavault
|
0
|
0
|
0
|
In Stock
|
0
|
| 60 |
60
|
Camembert Pierrot
|
0
|
0
|
0
|
In Stock
|
0
|
| 61 |
61
|
Sirop d'érable
|
0
|
0
|
25
|
In Stock
|
0
|
| 62 |
62
|
Tarte au sucre
|
0
|
0
|
0
|
In Stock
|
0
|
| 63 |
63
|
Vegie-spread
|
0
|
0
|
5
|
In Stock
|
0
|
| 64 |
64
|
Wimmers gute Semmelknödel
|
0
|
80
|
30
|
In Stock
|
80
|
| 65 |
65
|
Louisiana Fiery Hot Pepper Sauce
|
0
|
0
|
0
|
In Stock
|
0
|
| 66 |
66
|
Louisiana Hot Spiced Okra
|
0
|
100
|
20
|
In Stock
|
100
|
| 67 |
67
|
Laughing Lumberjack Lager
|
0
|
0
|
10
|
In Stock
|
0
|
| 68 |
68
|
Scottish Longbreads
|
0
|
10
|
15
|
In Stock
|
10
|
| 69 |
69
|
Gudbrandsdalsost
|
0
|
0
|
15
|
In Stock
|
0
|
| 70 |
70
|
Outback Lager
|
0
|
10
|
30
|
In Stock
|
10
|
| 71 |
71
|
Flotemysost
|
0
|
0
|
0
|
In Stock
|
0
|
| 72 |
72
|
Mozzarella di Giovanni
|
0
|
0
|
0
|
In Stock
|
0
|
| 73 |
73
|
Röd Kaviar
|
0
|
0
|
5
|
In Stock
|
0
|
| 74 |
74
|
Longlife Tofu
|
0
|
20
|
5
|
In Stock
|
20
|
| 75 |
75
|
Rhönbräu Klosterbier
|
0
|
0
|
25
|
In Stock
|
0
|
| 76 |
76
|
Lakkalikööri
|
0
|
0
|
20
|
In Stock
|
0
|
| 77 |
77
|
Original Frankfurter grüne Soße
|
0
|
0
|
15
|
In Stock
|
0
|
2. Usage of ISNULL to show Units in Stocks and to Order.
SQL Server Query 2
SELECT
ProductID,
ProductName,
UnitPrice,
UnitsInStock,
UnitsOnOrder,
-- Handle NULL UnitsInStock or UnitsOnOrder
InventoryValue = UnitPrice * ISNULL(UnitsInStock, 0) + UnitPrice * ISNULL(UnitsOnOrder, 0)
FROM Products
ORDER BY ProductID;
Create SQL query with SqlQueryBuilder 2
var (sql2, parameters2) = new SqlQueryBuilder()
.Select().Columns("ProductID", "ProductName", "UnitPrice", "UnitsInStock", "UnitsOnOrder")
.Column(new ColumnArithmatic("UnitPrice").MULTIPLY(new ISNULL(new Column("UnitsInStock"), 0))
.ADD(new Column("UnitPrice")).MULTIPLY(new ISNULL(new Column("UnitsOnOrder"), 0)), "InventoryValue")
.From("Products")
.OrderBy(new OrderBy().Set(new Column("ProductID")))
.Build();
Query build by SqlQueryBuilder 2
SELECT ProductID,
ProductName,
UnitPrice,
UnitsInStock,
UnitsOnOrder,
UnitPrice * ISNULL(UnitsInStock, @pMAIN_2512060922051083480) + UnitPrice * ISNULL(UnitsOnOrder, @pMAIN_2512060922051083481) AS InventoryValue
FROM Products
ORDER BY ProductID ASC;
Parameters (If used)
| Name |
Value |
| @pMAIN_2512060922051083480 |
0 |
| @pMAIN_2512060922051083481 |
0 |
Query Results 2:
| |
ProductID |
ProductName |
UnitPrice |
UnitsInStock |
UnitsOnOrder |
InventoryValue |
| 1 |
1
|
Chai
|
18
|
39
|
0
|
702.0000
|
| 2 |
2
|
Chang
|
19
|
17
|
40
|
1083.0000
|
| 3 |
3
|
Aniseed Syrup
|
10
|
13
|
70
|
830.0000
|
| 4 |
4
|
Chef Anton's Cajun Seasoning
|
22
|
53
|
0
|
1166.0000
|
| 5 |
5
|
Chef Anton's Gumbo Mix
|
21
|
0
|
0
|
0.0000
|
| 6 |
6
|
Grandma's Boysenberry Spread
|
25
|
120
|
0
|
3000.0000
|
| 7 |
7
|
Uncle Bob's Organic Dried Pears
|
30
|
15
|
0
|
450.0000
|
| 8 |
8
|
Northwoods Cranberry Sauce
|
40
|
6
|
0
|
240.0000
|
| 9 |
9
|
Mishi Kobe Niku
|
97
|
29
|
0
|
2813.0000
|
| 10 |
10
|
Ikura
|
31
|
31
|
0
|
961.0000
|
| 11 |
11
|
Queso Cabrales
|
21
|
22
|
30
|
1092.0000
|
| 12 |
12
|
Queso Manchego La Pastora
|
38
|
86
|
0
|
3268.0000
|
| 13 |
13
|
Konbu
|
6
|
24
|
0
|
144.0000
|
| 14 |
14
|
Tofu
|
23
|
35
|
0
|
813.7500
|
| 15 |
15
|
Genen Shouyu
|
15
|
39
|
0
|
604.5000
|
| 16 |
16
|
Pavlova
|
17
|
29
|
0
|
506.0500
|
| 17 |
17
|
Alice Mutton
|
39
|
0
|
0
|
0.0000
|
| 18 |
18
|
Carnarvon Tigers
|
62
|
42
|
0
|
2625.0000
|
| 19 |
19
|
Teatime Chocolate Biscuits
|
9
|
25
|
0
|
230.0000
|
| 20 |
20
|
Sir Rodney's Marmalade
|
81
|
40
|
0
|
3240.0000
|
| 21 |
21
|
Sir Rodney's Scones
|
10
|
3
|
40
|
430.0000
|
| 22 |
22
|
Gustaf's Knäckebröd
|
21
|
104
|
0
|
2184.0000
|
| 23 |
23
|
Tunnbröd
|
9
|
61
|
0
|
549.0000
|
| 24 |
24
|
Guaraná Fantástica
|
4
|
20
|
0
|
90.0000
|
| 25 |
25
|
NuNuCa Nuß-Nougat-Creme
|
14
|
76
|
0
|
1064.0000
|
| 26 |
26
|
Gumbär Gummibärchen
|
31
|
15
|
0
|
468.4500
|
| 27 |
27
|
Schoggi Schokolade
|
43
|
49
|
0
|
2151.1000
|
| 28 |
28
|
Rössle Sauerkraut
|
45
|
26
|
0
|
1185.6000
|
| 29 |
29
|
Thüringer Rostbratwurst
|
123
|
0
|
0
|
0.0000
|
| 30 |
30
|
Nord-Ost Matjeshering
|
25
|
10
|
0
|
258.9000
|
| 31 |
31
|
Gorgonzola Telino
|
12
|
0
|
70
|
875.0000
|
| 32 |
32
|
Mascarpone Fabioli
|
32
|
9
|
40
|
1568.0000
|
| 33 |
33
|
Geitost
|
2
|
112
|
0
|
280.0000
|
| 34 |
34
|
Sasquatch Ale
|
14
|
111
|
0
|
1554.0000
|
| 35 |
35
|
Steeleye Stout
|
18
|
20
|
0
|
360.0000
|
| 36 |
36
|
Inlagd Sill
|
19
|
112
|
0
|
2128.0000
|
| 37 |
37
|
Gravad lax
|
26
|
11
|
50
|
1586.0000
|
| 38 |
38
|
Côte de Blaye
|
263
|
17
|
0
|
4479.5000
|
| 39 |
39
|
Chartreuse verte
|
18
|
69
|
0
|
1242.0000
|
| 40 |
40
|
Boston Crab Meat
|
18
|
123
|
0
|
2263.2000
|
| 41 |
41
|
Jack's New England Clam Chowder
|
9
|
85
|
0
|
820.2500
|
| 42 |
42
|
Singaporean Hokkien Fried Mee
|
14
|
26
|
0
|
364.0000
|
| 43 |
43
|
Ipoh Coffee
|
46
|
17
|
10
|
1242.0000
|
| 44 |
44
|
Gula Malacca
|
19
|
27
|
0
|
525.1500
|
| 45 |
45
|
Rogede sild
|
9
|
5
|
70
|
712.5000
|
| 46 |
46
|
Spegesild
|
12
|
95
|
0
|
1140.0000
|
| 47 |
47
|
Zaanse koeken
|
9
|
36
|
0
|
342.0000
|
| 48 |
48
|
Chocolade
|
12
|
15
|
70
|
1083.7500
|
| 49 |
49
|
Maxilaku
|
20
|
10
|
60
|
1400.0000
|
| 50 |
50
|
Valkoinen suklaa
|
16
|
65
|
0
|
1056.2500
|
| 51 |
51
|
Manjimup Dried Apples
|
53
|
20
|
0
|
1060.0000
|
| 52 |
52
|
Filo Mix
|
7
|
38
|
0
|
266.0000
|
| 53 |
53
|
Perth Pasties
|
32
|
0
|
0
|
0.0000
|
| 54 |
54
|
Tourtière
|
7
|
21
|
0
|
156.4500
|
| 55 |
55
|
Pâté chinois
|
24
|
115
|
0
|
2760.0000
|
| 56 |
56
|
Gnocchi di nonna Alice
|
38
|
21
|
10
|
1178.0000
|
| 57 |
57
|
Ravioli Angelo
|
19
|
36
|
0
|
702.0000
|
| 58 |
58
|
Escargots de Bourgogne
|
13
|
62
|
0
|
821.5000
|
| 59 |
59
|
Raclette Courdavault
|
55
|
79
|
0
|
4345.0000
|
| 60 |
60
|
Camembert Pierrot
|
34
|
19
|
0
|
646.0000
|
| 61 |
61
|
Sirop d'érable
|
28
|
113
|
0
|
3220.5000
|
| 62 |
62
|
Tarte au sucre
|
49
|
17
|
0
|
838.1000
|
| 63 |
63
|
Vegie-spread
|
43
|
24
|
0
|
1053.6000
|
| 64 |
64
|
Wimmers gute Semmelknödel
|
33
|
22
|
80
|
3391.5000
|
| 65 |
65
|
Louisiana Fiery Hot Pepper Sauce
|
21
|
76
|
0
|
1599.8000
|
| 66 |
66
|
Louisiana Hot Spiced Okra
|
17
|
4
|
100
|
1768.0000
|
| 67 |
67
|
Laughing Lumberjack Lager
|
14
|
52
|
0
|
728.0000
|
| 68 |
68
|
Scottish Longbreads
|
12
|
6
|
10
|
200.0000
|
| 69 |
69
|
Gudbrandsdalsost
|
36
|
26
|
0
|
936.0000
|
| 70 |
70
|
Outback Lager
|
15
|
15
|
10
|
375.0000
|
| 71 |
71
|
Flotemysost
|
21
|
26
|
0
|
559.0000
|
| 72 |
72
|
Mozzarella di Giovanni
|
34
|
14
|
0
|
487.2000
|
| 73 |
73
|
Röd Kaviar
|
15
|
101
|
0
|
1515.0000
|
| 74 |
74
|
Longlife Tofu
|
10
|
4
|
20
|
240.0000
|
| 75 |
75
|
Rhönbräu Klosterbier
|
7
|
125
|
0
|
968.7500
|
| 76 |
76
|
Lakkalikööri
|
18
|
57
|
0
|
1026.0000
|
| 77 |
77
|
Original Frankfurter grüne Soße
|
13
|
32
|
0
|
416.0000
|