SELECT o.rfq_id, s.name, m.manufacturers_name, o.ship_address, o.serial, o.model, d.part_type, d.description, d.part_number, d.subs, d.qty, o.notes, d.action, d.vendor, d.pt, d.price2, d.buy, d.notes1, o.tracking_number, o.date_shipped, o.expected_date, o.po_no, o.issue_no, o.date_added,
CONCAT_WS(' ', c.customers_lastname, c.customers_firstname) AS customer_name,
c.customers_email_address,
CASE
WHEN o.ship_address = 0 THEN (a.entry_street_address,
a.entry_state)
WHEN o.ship_address = 1 THEN (p.street_address,
p.state)
END AS Address
FROM rfq_order o
JOIN rfq_order_detail d ON o.rfq_id = d.rfq_id
JOIN customers c ON o.customer_id = c.customers_id
JOIN address_book a ON c.customers_id = a.customers_id
JOIN manufacturers e ON o.manufacturer = e.manufacturers_id
JOIN manufacturers m ON o.manufacturer = m.manufacturers_id
JOIN rfq_order_status s ON o.status = s.id
LEFT JOIN shipping_address p ON o.rfq_id = p.rfq_id
当我尝试运行此查询时,它显示错误为“操作数应包含1列”。请帮助我。当我使用CASE WHEN o.ship_address = 0那么(a.entry_street_address)然后查询带给我街道地址,但我也希望国家在地址.Thanx提前
答案 0 :(得分:0)
您的案例陈述是错误的。像这样使用它:
CASE WHEN cond THEN exp1 ELSE exp2 END
或者:
CASE WHEN cond THEN exp1
WHEN cond2 THEN exp2
ELSE exp3 END
您也不能在其中放置多个列,它是一列。如果您确实需要更多列,则必须将它们连接起来,或复制case语句。
答案 1 :(得分:0)
concat
两列,或使用2 CASE
条。
SELECT ...
CASE
WHEN o.ship_address = 0 THEN concat(a.entry_street_address,
a.entry_state)
WHEN o.ship_address = 1 THEN concat(p.street_address,
p.state)
END AS Address
或者
SELECT ...
CASE
WHEN o.ship_address = 0 THEN a.entry_street_address
WHEN o.ship_address = 1 THEN p.street_address
END AS StreetAddress,
CASE
WHEN o.ship_address = 0 THEN a.entry_state
WHEN o.ship_address = 1 THEN p.state
END AS State,