|
@@ -1,3 +1,7 @@
|
|
|
+SET ":unit_count_one" = (CASE (SELECT count(v
|
|
|
+ WHEN 1 THEN (SELECT v
|
|
|
+ ELSE NULL
|
|
|
+END);
|
|
|
DROP TABLE IF EXISTS sqlpage_txn;
|
|
|
CREATE TABLE IF NOT EXISTS sqlpage_txn AS (
|
|
|
SELECT
|
|
@@ -9,17 +13,17 @@ SELECT
|
|
|
g.name AS "group",
|
|
|
t.organic,
|
|
|
t.price,
|
|
|
- CASE
|
|
|
- WHEN ut.name = 'Count' THEN t.quantity
|
|
|
+ CASE ut.name
|
|
|
+ WHEN 'Count' THEN COALESCE(t.quantity * convert_unit(u.name, :unit_count_one, p.name), t.quantity)
|
|
|
ELSE t.quantity * convert_unit(u.name, CASE
|
|
|
WHEN ut.name = 'Volume' THEN $unit_volume
|
|
|
WHEN ut.name = 'Mass' THEN $unit_mass
|
|
|
END, p.name)
|
|
|
END AS quantity,
|
|
|
- CASE
|
|
|
- WHEN ut.name = 'Count' THEN u.name
|
|
|
- WHEN ut.name = 'Volume' THEN $unit_volume
|
|
|
- WHEN ut.name = 'Mass' THEN $unit_mass
|
|
|
+ CASE ut.name
|
|
|
+ WHEN 'Count' THEN COALESCE(:unit_count_one, u.name)
|
|
|
+ WHEN 'Volume' THEN $unit_volume
|
|
|
+ WHEN 'Mass' THEN $unit_mass
|
|
|
END AS unit
|
|
|
FROM transactions t
|
|
|
JOIN products p ON (product_id = p.id)
|
|
@@ -35,9 +39,8 @@ AND
|
|
|
AND
|
|
|
(g.name IN (SELECT v
|
|
|
AND
|
|
|
- CASE
|
|
|
- WHEN ut.name = 'Count'
|
|
|
- THEN (u.name IN (SELECT v
|
|
|
+ CASE ut.name
|
|
|
+ WHEN 'Count' THEN convert_unit(u.name, :unit_count_one, p.name) IS NOT NULL OR u.name IN (SELECT v
|
|
|
ELSE TRUE
|
|
|
END
|
|
|
AND
|