SQL 加嵌套 Select 语句
SQL Plus Nested Select Statements
我正在尝试从 Vehicles table 中获取 vehicle_Code,它是不同品牌和型号组合的序号。 Vehicles table 的描述是品牌和型号的串联。销售 table 中的 VIN 与 OTLP_Vehicles table 的品牌和型号一致。我不确定如何修改我的 JOIN 并可能添加 WHERE 子句来获取 vehicle_Code.
这是我当前的脚本:
SELECT sale_date,vehicle_Code,sf.plan_ID,dealer_ID,
COUNT (*) AS vehicles_sold,
SUM (s.gross_sale_price) AS gross_sales_amt
FROM Sales s
INNER JOIN Sales_Financings sf
on sf.sale_ID = s.sale_ID
GROUP BY sale_date, vehicle_Code, sf.plan_ID, dealer_ID;
描述我需要用于 vehicle_Code 的 tables:
SQL> desc Sales
Name Null? Type
----------------------------------------- -------- ----------------------------
SALE_ID NOT NULL VARCHAR2(10)
SALESPERSON_ID NOT NULL VARCHAR2(10)
CUST_ID NOT NULL VARCHAR2(10)
SALE_DATE DATE
VIN NOT NULL VARCHAR2(20)
MILEAGE NUMBER(38)
VEHICLE_STATUS VARCHAR2(15)
GROSS_SALE_PRICE NOT NULL NUMBER(8,2)
DEALER_ID VARCHAR2(5)
VEHICLE_CODE VARCHAR2(10)
SQL> desc Vehicles
Name Null? Type
----------------------------------------- -------- ----------------------------
VEHICLE_CODE NOT NULL VARCHAR2(10)
DESCRIPTION VARCHAR2(100)
SQL> desc OLTP_Vehicles
Name Null? Type
----------------------------------------- -------- ----------------------------
VIN NOT NULL VARCHAR2(20)
TRADE_ID NOT NULL VARCHAR2(10)
TYPE VARCHAR2(10)
MAKE VARCHAR2(15)
MODEL VARCHAR2(15)
WHERE_FROM VARCHAR2(30)
WHOLESALE_COST NOT NULL NUMBER(8,2)
这是数据的一个子集:
SQL> SELECT * FROM Vehicles;
VEHICLE_CODE DESCRIPTION
--------------- ------------------------------
1 Ford, Fiesta
2 Chevrolet, Tahoe
3 Chevrolet, Colorado
4 Ford, Taurus
5 Ford, F-150
6 Chevrolet, Silverado
7 Ford, Focus
8 Dodge, Charger
9 Dodge, Challenger
10 Chevrolet, Suburban
11 Ford, Expedition
VEHICLE_CODE DESCRIPTION
--------------- ------------------------------
12 Ford, F-350
13 Dodge, Dakota
14 Ford, Edge
15 Dodge, Durango
16 Ford, F-250
17 Chevrolet, Corvette
18 Ford, Fusion
19 Dodge, Ram
20 Chevrolet, Impala
21 Chevrolet, Malibu
22 Chevrolet, Camaro
VEHICLE_CODE DESCRIPTION
--------------- ------------------------------
23 Chevrolet, Camaro
23 rows selected.
SQL> Select * From OLTP_Vehicles;
VIN TRADE_ID TYPE MAKE MODEL WHERE_FROM WHOLESALE_COST
-------------------- ---------- ---------- --------------- --------------- -------------------- ---------------
98765432FV87654321V0 9009009000 Truck Chevrolet Silverado Washington, DC ,000.00
25667894FC36948523V8 9009009001 Car Ford Fusion Virginia ,000.00
95786985HC58635889C2 9009009002 Car Chevrolet Camaro Maryland ,000.00
95678234FV53375329V5 9009009003 Truck Dodge Ram Maryland ,000.00
93678247HC45852485F5 9009009004 Truck Dodge Dakota Washington, DC ,000.00
25786785HV45785547T4 9009009005 Car Ford Focus Washington, DC ,000.00
27894578FC56778852C5 9009009006 Truck Chevrolet Silverado Virginia ,000.00
93678574HV45886348V5 9009009007 Car Ford Fiesta Maryland ,000.00
68975324HF45885337C6 9009009008 Car Dodge Charger Washington, DC ,000.00
98768859HC58785672H2 9009009009 Truck Chevrolet Colorado Washington, DC ,000.00
96587453GH45772535C1 9009009010 Truck Chevrolet Silverado Virginia ,000.00
SQL> Select * From Sales;
SALE_ID SALESPERSO CUST_ID SALE_DATE VIN MILEAGE VEHICLE_STATUS GROSS_SALE_PRICE DEALE VEHICLE_CODE
---------- ---------- ---------- --------- -------------------- ---------- --------------- ---------------- ----- ---------------
3000001000 6000000600 1000100000 17-FEB-28 98765432FV87654321V0 0 New ,000.00 D0001
3000001001 6000000601 1000100100 17-MAR-13 25667894FC36948523V8 25000 Used ,000.00 D0002
3000001002 6000000602 1000100200 17-MAY-02 95786985HC58635889C2 4 New ,000.00 D0003
3000001003 6000000603 1000100300 17-JUN-10 95678234FV53375329V5 3 New ,000.00 D0001
3000001004 6000000604 1000100400 17-JAN-09 93678247HC45852485F5 45666 Used ,000.00 D0002
3000001005 6000000605 1000100500 17-DEC-12 25786785HV45785547T4 0 New ,000.00 D0003
3000001006 6000000606 1000100600 17-NOV-31 27894578FC56778852C5 174000 Used ,000.00 D0001
3000001007 6000000607 1000100700 17-OCT-25 93678574HV45886348V5 1 New ,000.00 D0002
3000001008 6000000608 1000100800 17-AUG-22 68975324HF45885337C6 15 New ,000.00 D0003
3000001009 6000000609 1000100900 17-JUL-01 98768859HC58785672H2 35000 Used ,000.00 D0001
3000001010 6000000600 1000100000 17-JUL-01 96587453GH45772535C1 3 New ,000.00 D0002
理论上这可以使用连接来完成。
SELECT
* --INSERT YOUR COLUMNS
FROM
Sales s
INNER JOIN
OLTP_Vehicles OV ON OV.VIN = s.VIN
INNER JOIN
Vehicles V ON CONCAT(OV.MAKE, ', ',OV.MODEL) = V.DESCRIPTION
如果可行,请告诉我。
这是使用 PostGreSQL
的相同数据库 fiddle
我正在尝试从 Vehicles table 中获取 vehicle_Code,它是不同品牌和型号组合的序号。 Vehicles table 的描述是品牌和型号的串联。销售 table 中的 VIN 与 OTLP_Vehicles table 的品牌和型号一致。我不确定如何修改我的 JOIN 并可能添加 WHERE 子句来获取 vehicle_Code.
这是我当前的脚本:
SELECT sale_date,vehicle_Code,sf.plan_ID,dealer_ID,
COUNT (*) AS vehicles_sold,
SUM (s.gross_sale_price) AS gross_sales_amt
FROM Sales s
INNER JOIN Sales_Financings sf
on sf.sale_ID = s.sale_ID
GROUP BY sale_date, vehicle_Code, sf.plan_ID, dealer_ID;
描述我需要用于 vehicle_Code 的 tables:
SQL> desc Sales
Name Null? Type
----------------------------------------- -------- ----------------------------
SALE_ID NOT NULL VARCHAR2(10)
SALESPERSON_ID NOT NULL VARCHAR2(10)
CUST_ID NOT NULL VARCHAR2(10)
SALE_DATE DATE
VIN NOT NULL VARCHAR2(20)
MILEAGE NUMBER(38)
VEHICLE_STATUS VARCHAR2(15)
GROSS_SALE_PRICE NOT NULL NUMBER(8,2)
DEALER_ID VARCHAR2(5)
VEHICLE_CODE VARCHAR2(10)
SQL> desc Vehicles
Name Null? Type
----------------------------------------- -------- ----------------------------
VEHICLE_CODE NOT NULL VARCHAR2(10)
DESCRIPTION VARCHAR2(100)
SQL> desc OLTP_Vehicles
Name Null? Type
----------------------------------------- -------- ----------------------------
VIN NOT NULL VARCHAR2(20)
TRADE_ID NOT NULL VARCHAR2(10)
TYPE VARCHAR2(10)
MAKE VARCHAR2(15)
MODEL VARCHAR2(15)
WHERE_FROM VARCHAR2(30)
WHOLESALE_COST NOT NULL NUMBER(8,2)
这是数据的一个子集:
SQL> SELECT * FROM Vehicles;
VEHICLE_CODE DESCRIPTION
--------------- ------------------------------
1 Ford, Fiesta
2 Chevrolet, Tahoe
3 Chevrolet, Colorado
4 Ford, Taurus
5 Ford, F-150
6 Chevrolet, Silverado
7 Ford, Focus
8 Dodge, Charger
9 Dodge, Challenger
10 Chevrolet, Suburban
11 Ford, Expedition
VEHICLE_CODE DESCRIPTION
--------------- ------------------------------
12 Ford, F-350
13 Dodge, Dakota
14 Ford, Edge
15 Dodge, Durango
16 Ford, F-250
17 Chevrolet, Corvette
18 Ford, Fusion
19 Dodge, Ram
20 Chevrolet, Impala
21 Chevrolet, Malibu
22 Chevrolet, Camaro
VEHICLE_CODE DESCRIPTION
--------------- ------------------------------
23 Chevrolet, Camaro
23 rows selected.
SQL> Select * From OLTP_Vehicles;
VIN TRADE_ID TYPE MAKE MODEL WHERE_FROM WHOLESALE_COST
-------------------- ---------- ---------- --------------- --------------- -------------------- ---------------
98765432FV87654321V0 9009009000 Truck Chevrolet Silverado Washington, DC ,000.00
25667894FC36948523V8 9009009001 Car Ford Fusion Virginia ,000.00
95786985HC58635889C2 9009009002 Car Chevrolet Camaro Maryland ,000.00
95678234FV53375329V5 9009009003 Truck Dodge Ram Maryland ,000.00
93678247HC45852485F5 9009009004 Truck Dodge Dakota Washington, DC ,000.00
25786785HV45785547T4 9009009005 Car Ford Focus Washington, DC ,000.00
27894578FC56778852C5 9009009006 Truck Chevrolet Silverado Virginia ,000.00
93678574HV45886348V5 9009009007 Car Ford Fiesta Maryland ,000.00
68975324HF45885337C6 9009009008 Car Dodge Charger Washington, DC ,000.00
98768859HC58785672H2 9009009009 Truck Chevrolet Colorado Washington, DC ,000.00
96587453GH45772535C1 9009009010 Truck Chevrolet Silverado Virginia ,000.00
SQL> Select * From Sales;
SALE_ID SALESPERSO CUST_ID SALE_DATE VIN MILEAGE VEHICLE_STATUS GROSS_SALE_PRICE DEALE VEHICLE_CODE
---------- ---------- ---------- --------- -------------------- ---------- --------------- ---------------- ----- ---------------
3000001000 6000000600 1000100000 17-FEB-28 98765432FV87654321V0 0 New ,000.00 D0001
3000001001 6000000601 1000100100 17-MAR-13 25667894FC36948523V8 25000 Used ,000.00 D0002
3000001002 6000000602 1000100200 17-MAY-02 95786985HC58635889C2 4 New ,000.00 D0003
3000001003 6000000603 1000100300 17-JUN-10 95678234FV53375329V5 3 New ,000.00 D0001
3000001004 6000000604 1000100400 17-JAN-09 93678247HC45852485F5 45666 Used ,000.00 D0002
3000001005 6000000605 1000100500 17-DEC-12 25786785HV45785547T4 0 New ,000.00 D0003
3000001006 6000000606 1000100600 17-NOV-31 27894578FC56778852C5 174000 Used ,000.00 D0001
3000001007 6000000607 1000100700 17-OCT-25 93678574HV45886348V5 1 New ,000.00 D0002
3000001008 6000000608 1000100800 17-AUG-22 68975324HF45885337C6 15 New ,000.00 D0003
3000001009 6000000609 1000100900 17-JUL-01 98768859HC58785672H2 35000 Used ,000.00 D0001
3000001010 6000000600 1000100000 17-JUL-01 96587453GH45772535C1 3 New ,000.00 D0002
理论上这可以使用连接来完成。
SELECT
* --INSERT YOUR COLUMNS
FROM
Sales s
INNER JOIN
OLTP_Vehicles OV ON OV.VIN = s.VIN
INNER JOIN
Vehicles V ON CONCAT(OV.MAKE, ', ',OV.MODEL) = V.DESCRIPTION
如果可行,请告诉我。
这是使用 PostGreSQL
的相同数据库 fiddle