Queries for Customers
1. Customers who are either from 'USA' and have placed more than 5 orders, OR are from 'Canada' and have placed any order, OR are from 'Mexico' and have a Fax number.
SQL Server Query 1
SELECT
c.CustomerID,
c.CompanyName,
c.Country,
c.Fax
FROM Customers c
WHERE
(c.Country = 'USA' AND (SELECT COUNT(o.OrderID) FROM Orders o WHERE o.CustomerID = c.CustomerID) > 5)
OR
(c.Country = 'Canada' AND EXISTS (SELECT 1 FROM Orders o2 WHERE o2.CustomerID = c.CustomerID))
OR
(c.Country = 'Mexico' AND c.Fax IS NOT NULL);
Create SQL query with SqlQueryBuilder 1
var (sql1, parameters1) = new SqlQueryBuilder()
.Select()
.Columns("c.CustomerID"," c.CompanyName"," c.Country"," c.Fax")
.From("Customers", "c")
.Where(
new Where()
.StartBracket(new Column("c.Country").Equale("USA"))
.AND(
new SqlQueryBuilder().Select().Column(new COUNT(new Column("o.OrderID"))).From("Orders","o")
.Where(new Where(new Column("o.CustomerID").Equale(new Column("c.CustomerID")))).GreaterThan(5)
).EndBracket().OR()
.StartBracket(new Column("c.Country").Equale("Canada"))
.AND(new EXISTS(new SqlQueryBuilder().Select().ColumnWithValue("1","Col1").From("Orders","o2")
.Where(new Where(new Column("o2.CustomerID").Equale(new Column("c.CustomerID")))))
).EndBracket().OR()
.StartBracket(new Column("c.Country").Equale("Mexico")).AND(new IS_NOT_NULL(new Column("c.Fax"))).EndBracket()
)
.Build();
Query build by SqlQueryBuilder 1
SELECT c.CustomerID,
c.CompanyName,
c.Country,
c.Fax
FROM Customers AS c
WHERE (c.Country = @pMAIN_2507192051423347760
AND (SELECT COUNT(o.OrderID)
FROM Orders AS o
WHERE o.CustomerID = c.CustomerID) > @pMAIN_2507192051423347761)
OR (c.Country = @pMAIN_2507192051423347762
AND EXISTS (SELECT @pMAIN_2507192051423347763 AS Col1
FROM Orders AS o2
WHERE o2.CustomerID = c.CustomerID))
OR (c.Country = @pMAIN_2507192051423347764
AND c.Fax IS NOT NULL);
Parameters (If used)
Name |
Value |
@pMAIN_2507192051423347760 |
USA |
@pMAIN_2507192051423347761 |
5 |
@pMAIN_2507192051423347762 |
Canada |
@pMAIN_2507192051423347763 |
1 |
@pMAIN_2507192051423347764 |
Mexico |
Query Results 1:
|
CustomerID |
CompanyName |
Country |
Fax |
1 |
ANATR
|
Ana Trujillo Emparedados y helados
|
Mexico
|
(5) 555-3745
|
2 |
BOTTM
|
Bottom-Dollar Markets
|
Canada
|
(604) 555-3745
|
3 |
CENTC
|
Centro comercial Moctezuma
|
Mexico
|
(5) 555-7293
|
4 |
GREAL
|
Great Lakes Food Market
|
USA
|
|
5 |
LAUGB
|
Laughing Bacchus Wine Cellars
|
Canada
|
(604) 555-7293
|
6 |
LONEP
|
Lonesome Pine Restaurant
|
USA
|
(503) 555-9646
|
7 |
MEREP
|
Mère Paillarde
|
Canada
|
(514) 555-8055
|
8 |
OLDWO
|
Old World Delicatessen
|
USA
|
(907) 555-2880
|
9 |
PERIC
|
Pericles Comidas clásicas
|
Mexico
|
(5) 545-3745
|
10 |
RATTC
|
Rattlesnake Canyon Grocery
|
USA
|
(505) 555-3620
|
11 |
SAVEA
|
Save-a-lot Markets
|
USA
|
|
12 |
SPLIR
|
Split Rail Beer & Ale
|
USA
|
(307) 555-6525
|
13 |
WHITC
|
White Clover Markets
|
USA
|
(206) 555-4115
|
2. Find Customers Who Have Placed Orders BUT NOT Ordered 'Chai' in the Last 6 Months, AND have a 'PostalCode' that is purely numeric and starts with '9'
SQL Server Query 2
SELECT
c.CustomerID,
c.CompanyName,
c.ContactName,
c.ContactTitle,
c.PostalCode
FROM Customers c
WHERE
-- Condition 1: Customer has NOT ordered 'Chai' in the last 6 months
NOT EXISTS (
SELECT 1
FROM Orders o2
JOIN [Order Details] od ON o2.OrderID = od.OrderID
JOIN Products p ON od.ProductID = p.ProductID
WHERE o2.CustomerID = c.CustomerID
AND p.ProductName = 'Chai'
AND o2.OrderDate >= DATEADD(month, -6, GETDATE()) -- Orders within the last 6 months
)
AND
-- Condition 2: PostalCode is purely numeric (using TRY_CAST for safety) AND starts with '9'
TRY_CAST(c.PostalCode AS INT) IS NOT NULL -- Ensures it's numeric
AND c.PostalCode LIKE '9%'; -- Starts with '9'
Create SQL query with SqlQueryBuilder 2
var (sql2, parameters2) = new SqlQueryBuilder()
.Select()
.Columns("c.CustomerID", "c.CompanyName", "c.ContactName", "c.ContactTitle", "c.PostalCode")
.From("Customers", "c")
.Where(
new Where(new NOT_EXISTS(
new SqlQueryBuilder().Select().ColumnWithValue(1, "col1")
.From("Orders","o2")
.Join(new List<IJoin>()
{
new INNERJOIN().TableName("[Order Details]","od")
.On(new Column("o2.OrderID").Equale(new Column("od.OrderID"))),
new INNERJOIN().TableName("Products","p")
.On(new Column("od.ProductID").Equale(new Column("p.ProductID")))
})
.Where(new Where(new Column("o2.CustomerID").Equale(new Column("c.CustomerID")))
.AND(new Column("p.ProductName").Equale("Chai"))
.AND(new Column("o2.OrderDate").GreaterThan(new DATEADD(SqlDateInterval.month, -6, new GETDATE()))))
)).AND(new IS_NOT_NULL(new TRY_CAST(new Column("c.PostalCode"), SqlDataType.INT)))
.AND(new LIKE(new Column("c.PostalCode"), "9%"))
)
.Build();
Query build by SqlQueryBuilder 2
SELECT c.CustomerID,
c.CompanyName,
c.ContactName,
c.ContactTitle,
c.PostalCode
FROM Customers AS c
WHERE NOT EXISTS (SELECT @pMAIN_2507192051423463860 AS col1
FROM Orders AS o2
INNER JOIN
[Order Details] AS od
ON o2.OrderID = od.OrderID
INNER JOIN
Products AS p
ON od.ProductID = p.ProductID
WHERE o2.CustomerID = c.CustomerID
AND p.ProductName = @pMAIN_2507192051423463861
AND o2.OrderDate > DATEADD(month, @pMAIN_2507192051423463862, GETDATE()))
AND TRY_CAST (c.PostalCode AS INT) IS NOT NULL
AND c.PostalCode LIKE @pMAIN_2507192051423463863;
Parameters (If used)
Name |
Value |
@pMAIN_2507192051423463860 |
1 |
@pMAIN_2507192051423463861 |
Chai |
@pMAIN_2507192051423463862 |
-6 |
@pMAIN_2507192051423463863 |
9% |
Query Results 2:
|
CustomerID |
CompanyName |
ContactName |
ContactTitle |
PostalCode |
1 |
GREAL
|
Great Lakes Food Market
|
Howard Snyder
|
Marketing Manager
|
97403
|
2 |
HUNGC
|
Hungry Coyote Import Store
|
Yoshi Latimer
|
Sales Representative
|
97827
|
3 |
LAZYK
|
Lazy K Kountry Store
|
John Steel
|
Marketing Manager
|
99362
|
4 |
LETSS
|
Let's Stop N Shop
|
Jaime Yorres
|
Owner
|
94117
|
5 |
LONEP
|
Lonesome Pine Restaurant
|
Fran Wilson
|
Sales Manager
|
97219
|
6 |
OLDWO
|
Old World Delicatessen
|
Rene Phillips
|
Sales Representative
|
99508
|
7 |
THEBI
|
The Big Cheese
|
Liz Nixon
|
Marketing Manager
|
97201
|
8 |
TRAIH
|
Trail's Head Gourmet Provisioners
|
Helvetius Nagy
|
Sales Associate
|
98034
|
9 |
WARTH
|
Wartian Herkku
|
Pirkko Koskitalo
|
Accounting Manager
|
90110
|
10 |
WHITC
|
White Clover Markets
|
Karl Jablonski
|
Owner
|
98128
|
3. Find the Top 3 Customers by Total Order Value in Each Country, along with their Rank, and show their first and last order dates. If a customer ordered nothing, they should not appear.
SQL Server Query 3
WITH CustomerOrderValue AS (
-- Calculate total order value per customer
SELECT
c.CustomerID,
c.CompanyName,
c.Country,
SUM(od.Quantity * od.UnitPrice * (1 - od.Discount)) AS TotalOrderValue,
MIN(o.OrderDate) AS FirstOrderDate,
MAX(o.OrderDate) AS LastOrderDate
FROM Customers c
JOIN Orders o ON c.CustomerID = o.CustomerID
JOIN [Order Details] od ON o.OrderID = od.OrderID
GROUP BY c.CustomerID, c.CompanyName, c.Country
),
RankedCustomers AS (
-- Rank customers by TotalOrderValue within each country
SELECT
CustomerID,
CompanyName,
Country,
TotalOrderValue,
FirstOrderDate,
LastOrderDate,
DENSE_RANK() OVER (PARTITION BY Country ORDER BY TotalOrderValue DESC) AS CountryRank
FROM CustomerOrderValue
)
SELECT
rc.Country,
rc.CountryRank,
rc.CompanyName,
rc.TotalOrderValue,
rc.FirstOrderDate,
rc.LastOrderDate
FROM RankedCustomers rc
WHERE rc.CountryRank <= 3
ORDER BY rc.Country, rc.CountryRank;
Create SQL query with SqlQueryBuilder 3
var (sql3, parameters3) = new SqlQueryBuilder()
.WithCTETable(new Table("CustomerOrderValue"), new SqlQueryBuilder()
.Select().Columns("c.CustomerID","c.CompanyName","c.Country")
.Column(new SUM(new ColumnArithmatic(new Column("od.Quantity")).MULTIPLY(new Column("od.UnitPrice"))
.MULTIPLY().StartBracket(1).SUBTRACT(new Column("od.Discount")).EndBracket()), "TotalOrderValue")
.Column(new MIN(new Column("o.OrderDate")), "FirstOrderDate")
.Column(new MAX(new Column("o.OrderDate")), "LastOrderDate")
.From("Customers","c")
.Join(new List<IJoin>()
{
new INNERJOIN().TableName("Orders","o")
.On(new Column("c.CustomerID").Equale(new Column("o.CustomerID"))),
new INNERJOIN().TableName("[Order Details]","od")
.On(new Column("o.OrderID").Equale(new Column("od.OrderID"))),
})
.GroupBy(new GroupBy(new Column("c.CustomerID"), new Column("c.CompanyName"), new Column("c.Country")))
)
.WithCTETable(new Table("RankedCustomers"), new SqlQueryBuilder().Select()
.Columns("CustomerID","CompanyName","Country","TotalOrderValue","FirstOrderDate","LastOrderDate")
.Column(new DENSE_RANK().PARTITION_BY(new Column("Country")).ORDER_BY(new OrderBy().SetColumnDescending("TotalOrderValue")),
"CountryRank")
.From("CustomerOrderValue")
)
.Select()
.Columns("rc.Country","rc.CountryRank","rc.CompanyName","rc.TotalOrderValue","rc.FirstOrderDate","rc.LastOrderDate")
.From("RankedCustomers", "rc")
.Where(
new Where(new Column("rc.CountryRank").LessThanOrEqualeTo(3))
)
.OrderBy(new OrderBy().SetColumnAscending("rc.Country").SetColumnAscending("rc.CountryRank"))
.Build();
Query build by SqlQueryBuilder 3
WITH CustomerOrderValue
AS (SELECT c.CustomerID,
c.CompanyName,
c.Country,
SUM(od.Quantity * od.UnitPrice * (@pMAIN_2507192051423667390 - od.Discount)) AS TotalOrderValue,
MIN(o.OrderDate) AS FirstOrderDate,
MAX(o.OrderDate) AS LastOrderDate
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
GROUP BY c.CustomerID, c.CompanyName, c.Country),
RankedCustomers
AS (SELECT CustomerID,
CompanyName,
Country,
TotalOrderValue,
FirstOrderDate,
LastOrderDate,
DENSE_RANK() OVER (PARTITION BY Country ORDER BY TotalOrderValue DESC) AS CountryRank
FROM CustomerOrderValue)
SELECT rc.Country,
rc.CountryRank,
rc.CompanyName,
rc.TotalOrderValue,
rc.FirstOrderDate,
rc.LastOrderDate
FROM RankedCustomers AS rc
WHERE rc.CountryRank <= @pMAIN_2507192051423667391
ORDER BY rc.Country ASC, rc.CountryRank ASC;
Parameters (If used)
Name |
Value |
@pMAIN_2507192051423667390 |
1 |
@pMAIN_2507192051423667391 |
3 |
Query Results 3:
|
Country |
CountryRank |
CompanyName |
TotalOrderValue |
FirstOrderDate |
LastOrderDate |
1 |
Argentina
|
1
|
Océano Atlántico Ltda.
|
3460.19999694824
|
1/9/1997 12:00:00 AM
|
3/30/1998 12:00:00 AM
|
2 |
Argentina
|
2
|
Rancho grande
|
2844.09999084473
|
2/17/1997 12:00:00 AM
|
4/13/1998 12:00:00 AM
|
3 |
Argentina
|
3
|
Cactus Comidas para llevar
|
1814.79998779297
|
4/29/1997 12:00:00 AM
|
4/28/1998 12:00:00 AM
|
4 |
Austria
|
1
|
Ernst Handel
|
104874.978713989
|
7/17/1996 12:00:00 AM
|
5/5/1998 12:00:00 AM
|
5 |
Austria
|
2
|
Piccolo und mehr
|
23128.8600311279
|
11/13/1996 12:00:00 AM
|
4/27/1998 12:00:00 AM
|
6 |
Belgium
|
1
|
Suprêmes délices
|
24088.7799758911
|
7/9/1996 12:00:00 AM
|
4/21/1998 12:00:00 AM
|
7 |
Belgium
|
2
|
Maison Dewey
|
9736.07500457764
|
5/7/1997 12:00:00 AM
|
4/7/1998 12:00:00 AM
|
8 |
Brazil
|
1
|
Hanari Carnes
|
32841.3699417114
|
7/8/1996 12:00:00 AM
|
4/27/1998 12:00:00 AM
|
9 |
Brazil
|
2
|
Queen Cozinha
|
25717.4975166321
|
12/4/1996 12:00:00 AM
|
5/4/1998 12:00:00 AM
|
10 |
Brazil
|
3
|
Ricardo Adocicados
|
12450.8000183105
|
8/22/1996 12:00:00 AM
|
4/29/1998 12:00:00 AM
|
11 |
Canada
|
1
|
Mère Paillarde
|
28872.1902999878
|
10/17/1996 12:00:00 AM
|
10/30/1997 12:00:00 AM
|
12 |
Canada
|
2
|
Bottom-Dollar Markets
|
20801.6000213623
|
12/20/1996 12:00:00 AM
|
4/24/1998 12:00:00 AM
|
13 |
Canada
|
3
|
Laughing Bacchus Wine Cellars
|
522.5
|
4/3/1997 12:00:00 AM
|
1/1/1998 12:00:00 AM
|
14 |
Denmark
|
1
|
Simons bistro
|
16817.0975255966
|
10/29/1996 12:00:00 AM
|
5/6/1998 12:00:00 AM
|
15 |
Denmark
|
2
|
Vaffeljernet
|
15843.9248199463
|
11/28/1996 12:00:00 AM
|
4/2/1998 12:00:00 AM
|
16 |
Finland
|
1
|
Wartian Herkku
|
15648.7025642395
|
7/26/1996 12:00:00 AM
|
4/15/1998 12:00:00 AM
|
17 |
Finland
|
2
|
Wilman Kala
|
3161.35000610352
|
7/30/1997 12:00:00 AM
|
4/7/1998 12:00:00 AM
|
18 |
France
|
1
|
Bon app'
|
21963.2524261475
|
10/16/1996 12:00:00 AM
|
5/6/1998 12:00:00 AM
|
19 |
France
|
2
|
Blondesddsl père et fils
|
18534.0799789429
|
7/25/1996 12:00:00 AM
|
1/12/1998 12:00:00 AM
|
20 |
France
|
3
|
Folies gourmandes
|
11666.9000015259
|
1/8/1997 12:00:00 AM
|
12/22/1997 12:00:00 AM
|
21 |
Germany
|
1
|
QUICK-Stop
|
110277.304977417
|
8/5/1996 12:00:00 AM
|
4/14/1998 12:00:00 AM
|
22 |
Germany
|
2
|
Königlich Essen
|
30908.3839836121
|
10/7/1996 12:00:00 AM
|
4/16/1998 12:00:00 AM
|
23 |
Germany
|
3
|
Frankenversand
|
26656.559387207
|
7/29/1996 12:00:00 AM
|
4/9/1998 12:00:00 AM
|
24 |
Ireland
|
1
|
Hungry Owl All-Night Grocers
|
49979.9050006866
|
9/5/1996 12:00:00 AM
|
4/30/1998 12:00:00 AM
|
25 |
Italy
|
1
|
Magazzini Alimentari Riuniti
|
7176.21500205994
|
8/7/1996 12:00:00 AM
|
3/16/1998 12:00:00 AM
|
26 |
Italy
|
2
|
Reggiani Caseifici
|
7048.23990440369
|
8/23/1996 12:00:00 AM
|
4/30/1998 12:00:00 AM
|
27 |
Italy
|
3
|
Franchi S.p.A.
|
1545.69999885559
|
1/22/1997 12:00:00 AM
|
4/30/1998 12:00:00 AM
|
28 |
Mexico
|
1
|
Tortuga Restaurante
|
10812.1500434875
|
8/8/1996 12:00:00 AM
|
5/4/1998 12:00:00 AM
|
29 |
Mexico
|
2
|
Antonio Moreno Taquería
|
7023.97755432129
|
11/27/1996 12:00:00 AM
|
1/28/1998 12:00:00 AM
|
30 |
Mexico
|
3
|
Pericles Comidas clásicas
|
4242.20002746582
|
10/4/1996 12:00:00 AM
|
5/5/1998 12:00:00 AM
|
31 |
Norway
|
1
|
Santé Gourmet
|
5735.14999961853
|
12/18/1996 12:00:00 AM
|
4/10/1998 12:00:00 AM
|
32 |
Poland
|
1
|
Wolski Zajazd
|
3531.94997596741
|
12/5/1996 12:00:00 AM
|
4/23/1998 12:00:00 AM
|
33 |
Portugal
|
1
|
Furia Bacalhau e Frutos do Mar
|
6427.42259216309
|
10/14/1996 12:00:00 AM
|
3/19/1998 12:00:00 AM
|
34 |
Portugal
|
2
|
Princesa Isabel Vinhos
|
5044.94006347656
|
10/23/1996 12:00:00 AM
|
4/8/1998 12:00:00 AM
|
35 |
Spain
|
1
|
Godos Cocina Típica
|
11446.3600158691
|
9/11/1996 12:00:00 AM
|
4/21/1998 12:00:00 AM
|
36 |
Spain
|
2
|
Bólido Comidas preparadas
|
4232.85009765625
|
10/10/1996 12:00:00 AM
|
3/24/1998 12:00:00 AM
|
37 |
Spain
|
3
|
Romero y tomillo
|
1467.28999614716
|
8/14/1996 12:00:00 AM
|
4/9/1998 12:00:00 AM
|
38 |
Sweden
|
1
|
Folk och fä HB
|
29567.5625762939
|
7/24/1996 12:00:00 AM
|
4/27/1998 12:00:00 AM
|
39 |
Sweden
|
2
|
Berglunds snabbköp
|
24927.5774688721
|
8/12/1996 12:00:00 AM
|
3/4/1998 12:00:00 AM
|
40 |
Switzerland
|
1
|
Richter Supermarkt
|
19343.7788906097
|
7/12/1996 12:00:00 AM
|
5/6/1998 12:00:00 AM
|
41 |
Switzerland
|
2
|
Chop-suey Chinese
|
12348.8800125122
|
7/11/1996 12:00:00 AM
|
4/22/1998 12:00:00 AM
|
42 |
UK
|
1
|
Seven Seas Imports
|
16215.3250617981
|
11/21/1996 12:00:00 AM
|
2/4/1998 12:00:00 AM
|
43 |
UK
|
2
|
Eastern Connection
|
14761.0350036621
|
11/26/1996 12:00:00 AM
|
4/28/1998 12:00:00 AM
|
44 |
UK
|
3
|
Around the Horn
|
13390.6500091553
|
11/15/1996 12:00:00 AM
|
4/10/1998 12:00:00 AM
|
45 |
USA
|
1
|
Save-a-lot Markets
|
104361.949920654
|
10/8/1996 12:00:00 AM
|
5/1/1998 12:00:00 AM
|
46 |
USA
|
2
|
Rattlesnake Canyon Grocery
|
51097.8003330231
|
7/22/1996 12:00:00 AM
|
5/6/1998 12:00:00 AM
|
47 |
USA
|
3
|
White Clover Markets
|
27363.6050434113
|
7/31/1996 12:00:00 AM
|
5/1/1998 12:00:00 AM
|
48 |
Venezuela
|
1
|
HILARION-Abastos
|
22768.7639884949
|
7/16/1996 12:00:00 AM
|
4/28/1998 12:00:00 AM
|
49 |
Venezuela
|
2
|
LINO-Delicateses
|
16476.5650253296
|
1/6/1997 12:00:00 AM
|
4/21/1998 12:00:00 AM
|
50 |
Venezuela
|
3
|
LILA-Supermercado
|
16076.5999908447
|
8/16/1996 12:00:00 AM
|
5/5/1998 12:00:00 AM
|
4. List Customers who have ordered products from at least three different suppliers in a single order, AND their ContactTitle is 'Sales Representative' or 'Marketing Manager'.
SQL Server Query 4
SELECT
C.CustomerID,
C.CompanyName,
C.ContactTitle
FROM Customers C
WHERE
C.ContactTitle IN ('Sales Representative', 'Marketing Manager')
AND
EXISTS (
-- Find an order from this customer with products from >= 3 different suppliers
SELECT O.OrderID
FROM Orders O
WHERE O.CustomerID = C.CustomerID
AND (
SELECT COUNT(DISTINCT P.SupplierID)
FROM [Order Details] OD
JOIN Products P ON OD.ProductID = P.ProductID
WHERE OD.OrderID = O.OrderID
) >= 3
);
Create SQL query with SqlQueryBuilder 4
var (sql4, parameters4) = new SqlQueryBuilder()
.Select()
.Columns("C.CustomerID","C.CompanyName","C.ContactTitle")
.From("Customers", "C")
.Where(
new Where(new IN(new Column("C.ContactTitle"), "Sales Representative","Marketing Manager"))
.AND(new EXISTS(
new SqlQueryBuilder().Select().Column("O.OrderID", "OrderID")
.From("Orders","O")
.Where(new Where(new Column("O.CustomerID").Equale(new Column("C.CustomerID")))
.AND(new SqlQueryBuilder().Select()
.Column(new COUNT(new Column("P.SupplierID"), true), "col1")
.From("[Order Details] OD")
.Join(new List<IJoin>()
{
new INNERJOIN().TableName("Products","P")
.On(new Column("OD.ProductID").Equale(new Column("P.ProductID")))
})
.Where(new Where(new Column("OD.OrderID").Equale(new Column("O.OrderID"))))
.GreaterThanOrEqualeTo(3))
)
))
)
.Build();
Query build by SqlQueryBuilder 4
SELECT C.CustomerID,
C.CompanyName,
C.ContactTitle
FROM Customers AS C
WHERE C.ContactTitle IN (@pMAIN_2507192051423919330, @pMAIN_2507192051423919331)
AND EXISTS (SELECT O.OrderID AS OrderID
FROM Orders AS O
WHERE O.CustomerID = C.CustomerID
AND (SELECT COUNT(DISTINCT P.SupplierID) AS col1
FROM [Order Details] AS OD
INNER JOIN
Products AS P
ON OD.ProductID = P.ProductID
WHERE OD.OrderID = O.OrderID) >= @pMAIN_2507192051423919332);
Parameters (If used)
Name |
Value |
@pMAIN_2507192051423919330 |
Sales Representative |
@pMAIN_2507192051423919331 |
Marketing Manager |
@pMAIN_2507192051423919332 |
3 |
Query Results 4:
|
CustomerID |
CompanyName |
ContactTitle |
1 |
BLONP
|
Blondesddsl père et fils
|
Marketing Manager
|
2 |
OLDWO
|
Old World Delicatessen
|
Sales Representative
|
3 |
MAGAA
|
Magazzini Alimentari Riuniti
|
Marketing Manager
|
4 |
ALFKI
|
Alfreds Futterkiste
|
Sales Representative
|
5 |
FRANK
|
Frankenversand
|
Marketing Manager
|
6 |
HILAA
|
HILARION-Abastos
|
Sales Representative
|
7 |
ISLAT
|
Island Trading
|
Marketing Manager
|
8 |
LEHMS
|
Lehmanns Marktstand
|
Sales Representative
|
9 |
TOMSP
|
Toms Spezialitäten
|
Marketing Manager
|
10 |
WANDK
|
Die Wandernde Kuh
|
Sales Representative
|
11 |
SPECD
|
Spécialités du monde
|
Marketing Manager
|
12 |
SAVEA
|
Save-a-lot Markets
|
Sales Representative
|
13 |
LACOR
|
La corne d'abondance
|
Sales Representative
|
14 |
GREAL
|
Great Lakes Food Market
|
Marketing Manager
|
15 |
PRINI
|
Princesa Isabel Vinhos
|
Sales Representative
|
16 |
BSBEV
|
B's Beverages
|
Sales Representative
|
17 |
RANCH
|
Rancho grande
|
Sales Representative
|
18 |
BLAUS
|
Blauer See Delikatessen
|
Sales Representative
|
19 |
AROUT
|
Around the Horn
|
Sales Representative
|
20 |
FRANR
|
France restauration
|
Marketing Manager
|
21 |
CONSH
|
Consolidated Holdings
|
Sales Representative
|
22 |
PERIC
|
Pericles Comidas clásicas
|
Sales Representative
|
23 |
TRADH
|
Tradição Hipermercados
|
Sales Representative
|
5. Archiving Inactive Customers with Their Last Order Details.
SQL Server Query 5
SELECT
c.CustomerID,
c.CompanyName,
c.ContactName,
c.ContactTitle,
c.Address,
c.City,
c.Region,
c.PostalCode,
c.Country,
c.Phone,
c.Fax,
o.OrderID AS LastOrderID,
o.OrderDate AS LastOrderDate,
o.Freight AS LastOrderFreight
INTO ArchivedCustomersAndLastOrder -- New table for inactive customers
FROM Customers c
OUTER APPLY (
-- Get the last order for each customer
SELECT TOP 1 OrderID, OrderDate, Freight
FROM Orders
WHERE CustomerID = c.CustomerID
ORDER BY OrderDate DESC
) AS o
WHERE o.OrderDate < '1997-01-01'; -- Only include customers whose last order was before 1997
-- View the archived data
SELECT *
FROM ArchivedCustomersAndLastOrder;
-- Clean up the new table
DROP TABLE IF EXISTS ArchivedCustomersAndLastOrder;
Create SQL query with SqlQueryBuilder 5
var (sql5, parameters5) = new SqlQueryBuilder()
.Select()
.Columns("c.CustomerID","c.CompanyName","c.ContactName","c.ContactTitle","c.Address","c.City","c.Region","c.PostalCode","c.Country","c.Phone","c.Fax")
.Column("o.OrderID","LastOrderID")
.Column("o.OrderDate","LastOrderDate")
.Column("o.Freight", "LastOrderFreight")
.INTO(new Table("ArchivedCustomersAndLastOrder"))
.From("Customers", "c")
.OuterApply(new SqlQueryBuilder().Select()
.Top(1)
.Columns("OrderID", "OrderDate" ,"Freight")
.From("Orders")
.Where(new Where(new Column("CustomerID").Equale(new Column("c.CustomerID"))))
.OrderBy(new OrderBy().SetColumnDescending("OrderDate"))
, "o")
.Where(
new Where(new Column("o.OrderDate").LessThan("1997-01-01"))
)
.Select().Star().From("ArchivedCustomersAndLastOrder")
.DropTable(new Table("ArchivedCustomersAndLastOrder"), true)
.Build();
Query build by SqlQueryBuilder 5
SELECT c.CustomerID,
c.CompanyName,
c.ContactName,
c.ContactTitle,
c.Address,
c.City,
c.Region,
c.PostalCode,
c.Country,
c.Phone,
c.Fax,
o.OrderID AS LastOrderID,
o.OrderDate AS LastOrderDate,
o.Freight AS LastOrderFreight
INTO ArchivedCustomersAndLastOrder
FROM Customers AS c OUTER APPLY (SELECT TOP 1 OrderID,
OrderDate,
Freight
FROM Orders
WHERE CustomerID = c.CustomerID
ORDER BY OrderDate DESC) AS o
WHERE o.OrderDate < @pMAIN_2507192051424129220;
SELECT *
FROM ArchivedCustomersAndLastOrder;
DROP TABLE IF EXISTS ArchivedCustomersAndLastOrder;
Parameters (If used)
Name |
Value |
@pMAIN_2507192051424129220 |
1997-01-01 |
Query Results 5:
|
CustomerID |
CompanyName |
ContactName |
ContactTitle |
Address |
City |
Region |
PostalCode |
Country |
Phone |
Fax |
LastOrderID |
LastOrderDate |
LastOrderFreight |
1 |
CENTC
|
Centro comercial Moctezuma
|
Francisco Chang
|
Marketing Manager
|
Sierras de Granada 9993
|
México D.F.
|
|
5022
|
Mexico
|
(5) 555-3392
|
(5) 555-7293
|
10259
|
7/18/1996 12:00:00 AM
|
3.2500
|