|
<< Click to Display Table of Contents >> Navigation: Appendix > SQL snipits |
SELECT
customer_id, COUNT(customer_id),
contract_id, COUNT(contract_id)
FROM
dsptch30_contract
GROUP BY
customer_id, contract_id
HAVING
COUNT(customer_id) > 1 AND COUNT(contract_id) > 1
SELECT
ticket_number, COUNT(ticket_number)
FROM
shipment_ticket
GROUP BY
ticket_number
HAVING
COUNT(ticket_number) > 1
SELECT t2.customer_id, t1.contract_id, item, COUNT(*) AS duplicate_count
FROM dsptch30_contract_item t1
LEFT JOIN dsptch30_contract t2 ON t2.row_id = t1.contract_row_id
WHERE t2.customer_id IS NOT NULL
GROUP BY t2.customer_id, t1.contract_id, item
HAVING COUNT(*) > 1;
SELECT
{ fn CURDATE() } AS "CURDATE()",
{ fn CURRENT_DATE() } AS "CURRENT_DATE()",
{ fn CURRENT_TIME(6) } AS "CURRENT_TIME()",
{ fn CURRENT_TIMESTAMP() } AS "CURRENT_TIMESTAMP()",
{ fn CURTIME() } AS "CURTIME()",
{ fn DAYNAME({ fn CURRENT_DATE() }) } AS "DAYNAME()",
{ fn DAYOFMONTH({ fn CURRENT_DATE() }) } AS "DAYOFMONTH()",
{ fn DAYOFYEAR({ fn CURRENT_DATE() }) } AS "DAYOFYEAR()",
{ fn HOUR({ fn CONVERT({ fn CURRENT_TIME() }, TIME) }) } AS "HOUR()",
{ fn MINUTE({ fn CONVERT({ fn CURRENT_TIME() }, TIME) }) } AS "MINUTE()",
{ fn MONTH({ fn CURRENT_DATE() }) } AS "MONTH()",
{ fn MONTHNAME({ fn CURRENT_DATE() }) } AS "MONTHNAME()",
{ fn NOW() } AS "NOW()",
{ fn QUARTER({ fn CURRENT_DATE() }) } AS "QUARTER()",
{ fn SECOND({ fn CONVERT({ fn CURRENT_TIME() }, TIME) }) } AS "SECOND()",
{ fn WEEK({ fn CURRENT_DATE() }) } AS "WEEK()",
{ fn YEAR({ fn CURRENT_DATE() }) } AS "YEAR()",
{ fn TIMESTAMPADD(SECOND, 120, { fn CURRENT_TIMESTAMP() }) } AS "TIMESTAMPADD()",
{ fn TIMESTAMPDIFF(SECOND, { fn CURRENT_TIMESTAMP() }, { fn TIMESTAMPADD(SECOND, 120, { fn CURRENT_TIMESTAMP() }) }) } AS "TIMESTAMPDIFF()"
UPDATE dsptch30_contract_item SET unit_price = (SELECT unit_price FROM dsptch30_material WHERE dsptch30_material.row_id = material_row_id)
DELETE FROM "&table_name_item" WHERE parent_serial_number IN (SELECT serial_number FROM "&table_name" WHERE parent_serial_number = -1);
DELETE FROM "&table_name" WHERE parent_serial_number = -1
DELETE FROM dsptch30_material WHERE material_code NOT IN (SELECT DISTINCT material_code FORM "&table_name" WHERE material_code IS NOT NULL ORDER BY material_code)
CREATE ROLE jeffw with LOGIN PASSWORD 'm8w1z4';
GRANT ALL ON ALL TABLES IN SCHEMA PUBLIC TO jeffw;
UPDATE dsptch30_customer SET delivery_taxes_payable = NULL, material_taxes_payable = NULL;
UPDATE dsptch30_contract SET delivery_taxes_payable = NULL, material_taxes_payable = NULL;
UPDATE dsptch30_contract_item SET taxes_payable = NULL;
UPDATE dsptch30_material SET taxes_payable = NULL;
UPDATE dsptch30_haul_rate SET taxes_payable = NULL;
UPDATE dsptch30_zone SET taxes_payable = NULL;
The idea here is that you have recreated your database by importing all of your Tickets.
When you did that, triggers automatically created a whole bunch of data that you may no longer want.
For example, it's 2026 and you have carefully gone in and deleted all the Trucks not used since 2024. However, you imported all of your Tickets from 2021 and every single Truck that you used in 2021 will be created once again. This happens for Customers, Orders, Order Items, Materials, Zones...
These commands will clean up all that data.
--
-- This gets rid of all the rows that are created by triggers after Tickets have been imported.
--
DELETE FROM dsptch30_customer;
DELETE FROM dsptch30_material;
DELETE FROM dsptch30_vehicle_type;
DELETE FROM dsptch30_zone;
DELETE FROM dsptch30_truck;
--
DELETE FROM dsptch30_contract;
DELETE FROM dsptch30_contract_item;
DELETE FROM dsptch30_haul_rate;
DELETE FROM dsptch30_placed_at;
DELETE FROM dsptch30_station;
--
-- reset autoincrement values after doing and import
--
SELECT setval('dsptch30_carrier_row_id_seq', (SELECT MAX(row_id) FROM dsptch30_carrier) + 1);
SELECT setval('dsptch30_company_info_row_id_seq', (SELECT MAX(row_id) FROM dsptch30_company_info) + 1);
SELECT setval('dsptch30_destination_row_id_seq', (SELECT MAX(row_id) FROM dsptch30_destination) + 1);
SELECT setval('dsptch30_measurement_unit_row_id_seq', (SELECT MAX(row_id) FROM dsptch30_measurement_unit) + 1);
SELECT setval('dsptch30_source_row_id_seq', (SELECT MAX(row_id) FROM dsptch30_source) + 1);
SELECT setval('dsptch30_tax_rate_row_id_seq', (SELECT MAX(row_id) FROM dsptch30_tax_rate) + 1);
--
SELECT setval('dsptch30_ticket_number_printer_row_id_seq',(SELECT MAX(row_id) FROM dsptch30_ticket_number_printer) + 1);
--
SELECT setval('dsptch30_truck_row_id_seq',(SELECT MAX(row_id) FROM dsptch30_truck) + 1);
--
SELECT setval('dsptch30_material_row_id_seq', (SELECT MAX(row_id) FROM dsptch30_material) + 1);
SELECT setval('dsptch30_vehicle_type_row_id_seq', (SELECT MAX(row_id) FROM dsptch30_vehicle_type) + 1);
SELECT setval('dsptch30_zone_row_id_seq', (SELECT MAX(row_id) FROM dsptch30_zone) + 1);
--
SELECT setval('dsptch30_customer_row_id_seq', (SELECT MAX(row_id) FROM dsptch30_customer) + 1);
SELECT setval('dsptch30_contract_row_id_seq', (SELECT MAX(row_id) FROM dsptch30_contract) + 1);
SELECT setval('dsptch30_contract_item_row_id_seq', (SELECT MAX(row_id) FROM dsptch30_contract_item) + 1);
SELECT setval('dsptch30_haul_rate_row_id_seq', (SELECT MAX(row_id) FROM dsptch30_haul_rate) + 1);
SELECT setval('dsptch30_placed_at_row_id_seq', (SELECT MAX(row_id) FROM dsptch30_placed_at) + 1);
SELECT setval('dsptch30_station_row_id_seq', (SELECT MAX(row_id) FROM dsptch30_station) + 1);
--
SELECT setval('shipment_ticket_serial_number_seq', (SELECT MAX(serial_number) FROM shipment_ticket) + 1);
SELECT setval('receipt_ticket_serial_number_seq', (SELECT MAX(serial_number) FROM receipt_ticket) + 1);
--
SELECT setval('dsptch30_ticket_cash_sale_row_id_seq', (SELECT MAX(row_id) FROM dsptch30_ticket_cash_sale) + 1);
--
UPDATE dsptch30_ticket_number SET next_ticket_number = (SELECT COALESCE(MAX(ticket_number) + 1, 1) FROM receipt_ticket) WHERE table_name = 'receipt_ticket';
UPDATE dsptch30_ticket_number SET next_ticket_number = (SELECT COALESCE(MAX(ticket_number) + 1, 1) FROM shipment_ticket) WHERE table_name = 'shipment_ticket';
UPDATE shipment_ticket
SET overload = (
SELECT iif( (ifnull(agw, 0) = 0 AND
ifnull(agw, 0) = 0), 0, iif(rgw > agw, agw, rgw) ) < gross
FROM dsptch30_truck t1
WHERE t1.truck_id = truck_id
)
WHERE truck_id IS NOT NULL;
UPDATE dsptch30_contract set description = regexp_replace(description, '\\r\\n', chr(10), 'g')
CAST(EXTRACT(EPOCH FROM "t1"."ticket_date") AS INTEGER)
SELECT
truck_id,
AVG(net),
-- clean up AVG so we don't get a resul like 16482.5
(CAST(AVG(net) AS INTEGER) + 5) / 10 * 10 "Average",
CAST(AVG(net) AS INTEGER) "Step 1: Average AS INTEGER",
CAST(AVG(net) AS INTEGER) + 5 "Step 2: + 5",
(CAST(AVG(net) AS INTEGER) + 5) / 10 "Step 3: / 10",
(CAST(AVG(net) AS INTEGER) + 5) / 10 * 10 "Step 4: * 10"
FROM "&table_name" t1
&where_clause
GROUP BY truck_id
ORDER BY truck_id
SELECT DISTINCT DistinctZone_.zone
FROM
(
SELECT DISTINCT "zone" FROM {IF ASA}"dba".{FI}{IF MSSQL}"dba".{FI}dsptch30_zone
UNION SELECT DISTINCT "zone" FROM {IF ASA}"dba".{FI}{IF MSSQL}"dba".{FI}dsptch30_haul_rate
) DistinctZone_
ORDER BY "zone"
UPDATE dsptch30_contract_item SET (unit_price, taxes_payable, additional_fee, minimum_charge) = (SELECT unit_price, taxes_payable, additional_fee, minimum_charge FROM dsptch30_material WHERE dsptch30_material.material_code = dsptch30_contract_item.item)
CREATE OR REPLACE FUNCTION set_next_ticket_number () RETURNS VOID
STRICT
LANGUAGE PLPGSQL
AS
$plpgsql$
DECLARE
_ticket_table RECORD;
BEGIN
FOR _ticket_table IN SELECT "table_name" FROM dsptch30_ticket_number
LOOP
EXECUTE format('UPDATE dsptch30_ticket_number SET next_ticket_number = (SELECT COALESCE(MAX(ticket_number) + 1, 1) FROM %I) WHERE table_name = $1', _ticket_table.table_name) USING _ticket_table.table_name;
END LOOP;
END;
$plpgsql$;
sudo systemctl start postgresql
sudo systemctl restart postgresql
sudo systemctl stop postgresql
sudo systemctl status postgresql
SELECT invoice_number, MAX(ticket_date_date) "invoice_date", '&table_name' "table_name"
FROM shipment_ticket
--FROM "&table_name"
WHERE invoice_number IS NOT NULL
GROUP BY invoice_number, table_name
ALTER TABLE "&table_name" DISABLE TRIGGER ALL;
UPDATE "&table_name" SET parent_serial_number = -2;
ALTER TABLE "&table_name" ENABLE TRIGGER ALL;
SELECT t1.contract_row_id, t1.contract_id, t1.item, COUNT(net_3), SUM(net_3)
FROM public.dsptch30_contract_item t1
LEFT JOIN "&table_name" t2 ON t2.contract_id = t1.contract_id AND t2.item = t1.item
GROUP BY t1.contract_row_id, t1.contract_id, t1.item
INSERT INTO receipt_ticket_image_driver_signature (serial_number, ml_uuid, last_modified, image_driver_signature)
SELECT
23439,
ml_uuid,
last_modified,
image_driver_signature
FROM receipt_ticket_image_driver_signature
WHERE serial_number = 22654
The value 1.25 must be edited according to the sources royalty rate.
WITH base AS (
SELECT
t1.ticket_date_date,
t1.item,
t1.source,
t1.net_3,
1.25 AS rate,
ROUND(t1.net_3 * 1.25, 2) AS sub_total
FROM &table_name t1
&where_clause
)
SELECT
ticket_date_date,
item,
source,
SUM(net_3) AS tonnes,
MAX(rate) AS "Rate",
SUM(sub_total) AS "Sub-Total",
SUM(ROUND(sub_total * 0.13, 2)) AS "HST",
SUM(ROUND(sub_total * 1.13, 2)) AS "Total"
FROM base
GROUP BY
ticket_date_date,
item,
source
ORDER BY
ticket_date_date,
item;