Please click here for sample tables and description.通用SQL查詢與組由
我有兩個表「車輛」和「VEHICLE_CLASS」作爲每附圖像。
我需要一個查詢來獲取結果行,每個VEHICLE_CLASS按照狀態分組了多少個VEHICLES,如附圖所示。
查詢應該是通用的,所以它可以在任何數據庫(MySQL的/甲骨文/ MSSQL/DB2)
使用請幫助。
CREATE TABLE VEHICLE
(
VEHICLE_ID varchar(20),
VEHICLE_CLASS_ID varchar(30),
STATUS int
);
CREATE TABLE VEHICLE_CLASS
(
VEHICLE_CLASS_ID varchar(30),
VEHICLE_CLASS_NAME varchar(30)
);
INSERT INTO VEHICLE
(VEHICLE_ID, VEHICLE_CLASS_ID, STATUS)
VALUES
('vehicle_001', 'vehicle_class_001', 0),
('vehicle_002', 'vehicle_class_002', 1),
('vehicle_003', 'vehicle_class_003', 2),
('vehicle_004', 'vehicle_class_001', 0),
('vehicle_005', 'vehicle_class_002', 2),
('vehicle_006', 'vehicle_class_001', 0),
('vehicle_007', NULL, 1);
INSERT INTO VEHICLE_CLASS
(VEHICLE_CLASS_ID, VEHICLE_CLASS_NAME)
VALUES
('vehicle_class_001', 'ABC'),
('vehicle_class_002', 'BCD'),
('vehicle_class_003', 'EFG');
這裏是我試過,但沒能得到期望的結果查詢:
SELECT veh.VEHICLE_CLASS_ID, vehclass.VEHICLE_CLASS_NAME,
SUM(CASE WHEN veh.STATUS=2 THEN COUNT(veh.VEHICLE_ID) end) Completed,
SUM(CASE WHEN veh.STATUS!=2 THEN COUNT(veh.VEHICLE_ID) end) not_completed
FROM VEHICLE veh LEFT JOIN VEHICLE_CLASS vehclass on veh.VEHICLE_CLASS_ID = vehclass.VEHICLE_CLASS_ID
GROUP BY veh.VEHICLE_CLASS_ID having veh.VEHICLE_CLASS_ID is not null;
+1,你打我答案。我做出的唯一改變(以及我在我的回答中做的)是用'<>'替換'!=',以便在不同的RDBM上工作 – Lamak
@Lamak這很奇怪。我總是寫'<>',但它在SQL Server Oracle和MySQL上工作。 –
真的嗎?我知道''='在SQL上工作,我認爲我確信它不在MySQL上,也許他們會在更新的版本中添加它。很高興知道!謝謝 – Lamak