I want to display a rows train with id_user and id_train Can I nested a case statement in count function sql?
My SQL is here but it errors
SELECT ticket.*
, COUNT( CASE trans.id_user WHEN 1 THEN 1
CASE trans.id_train WHEN 1 THEN 1
ELSE NULL END) AS total_ticket
, SUM(train.price) AS total_price
, user.*
FROM train JOIN trans ON trans.id_train = kereta.id_train
JOIN user ON trans.id_user = user.id_user
JOIN ticket ON ticket.train = train.id_train;
COUNT( CASE trans.id_user WHEN 1 THEN 1 CASE trans.id_train WHEN 1 THEN 1 ELSE NULL END ) AS total_ticket
Unclear construction. Looks like you need one of below variants.
COUNT( CASE WHEN trans.id_user = 1 THEN 1
WHEN trans.id_train = 1 THEN 1
ELSE NULL END ) AS total_ticket
-- which may be simplified to
SUM(1 IN (trans.id_user, trans.id_train)) AS total_ticket
COUNT( CASE WHEN trans.id_user = 1
AND trans.id_train = 1 THEN 1
ELSE NULL END ) AS total_ticket
-- which may be simplified to
SUM(trans.id_user = 1 AND trans.id_train = 1) AS total_ticket