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_2507200144082669950 THEN @pMAIN_2507200144082669951 ELSE @pMAIN_2507200144082669952 END AS StockStatus,
ISNULL(COALESCE (UnitsOnOrder, ReorderLevel), @pMAIN_2507200144082669953) AS QuantityToOrder
FROM Products
ORDER BY ProductID ASC;
Parameters (If used)
Name |
Value |
@pMAIN_2507200144082669950 |
0 |
@pMAIN_2507200144082669951 |
In Stock |
@pMAIN_2507200144082669952 |
Out Of Stock |
@pMAIN_2507200144082669953 |
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_2507200144082725220) + UnitPrice * ISNULL(UnitsOnOrder, @pMAIN_2507200144082725221) AS InventoryValue
FROM Products
ORDER BY ProductID ASC;
Parameters (If used)
Name |
Value |
@pMAIN_2507200144082725220 |
0 |
@pMAIN_2507200144082725221 |
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
|