on 2020 Mar 31 2:43 PM
Running SQL Anywhere 17.0.4.2053 on Windows 10 64-bit.
I have SQL using the PIVOT directive: Code Sample
SELECT s.settlement_nbr,
s1_settlement_ngc_split.payee_id,
s.uom_buy_sell,
s.uom_buy_sell_description,
s.uom_price,
s.uom_price_description
FROM s1_settlement_ngc_split,
(SELECT s.settlement_nbr,
'S' AS sv_type,
s.settlement_type,
'Contract No. ' + CAST(c.contract_id AS varchar(10))
AS group_description,
s.uom_code AS uom_buy_sell,
uom_s.description AS uom_buy_sell_description,
c.alt_price_uom AS uom_price,
uom_p.description AS uom_price_description
FROM s1_settlement s,
s1_settlement_ticket_detail td
LEFT OUTER JOIN
(SELECT vehicle_disposition_nbr,
SUM(advance_amount) AS advance_amount
FROM s1_vp_advance_amount
GROUP BY vehicle_disposition_nbr
) vp_a
ON vp_a.vehicle_disposition_nbr = td.vehicle_disposition_nbr
LEFT OUTER JOIN
(SELECT settlement_nbr,
contract_nbr,
pricing_order,
vehicle_disposition_nbr,
amount
FROM s1_settlement_ticket_discount
WHERE deduction_addition_code = 'F'
) fr
ON fr.settlement_nbr = td.settlement_nbr
AND fr.contract_nbr = td.contract_nbr
AND fr.pricing_order = td.pricing_order
AND fr.vehicle_disposition_nbr = td.vehicle_disposition_nbr
LEFT OUTER JOIN s1_settlement_ticket_ntp_view ntp
ON ntp.settlement_nbr = td.settlement_nbr
AND ntp.contract_nbr = td.contract_nbr
AND ntp.pricing_order = td.pricing_order
AND ntp.vehicle_disposition_nbr = td.vehicle_disposition_nbr
LEFT OUTER JOIN
(SELECT settlement_nbr,
contract_nbr,
pricing_order,
vehicle_disposition_nbr,
1 AS c1,
2 AS c2,
3 AS c3,
4 AS c4,
5 AS c5,
6 AS c6
FROM (SELECT settlement_nbr,
contract_nbr,
pricing_order,
vehicle_disposition_nbr,
RANK() OVER (PARTITION BY CAST(settlement_nbr AS varchar(10)) + ' ' + CAST(contract_nbr AS varchar(10)) + ' ' + CAST(pricing_order AS varchar(10)) + ' ' + CAST(vehicle_disposition_nbr AS varchar(10))
ORDER BY checkoff_code
)
AS row_count,
amount
FROM (SELECT DISTINCT sc.settlement_nbr,
sc.contract_nbr,
sc.pricing_order,
sc.vehicle_disposition_nbr,
(-1) * sc.amount
AS amount,
sc.checkoff_code
FROM s1_settlement_checkoff sc
) a
) b
PIVOT (MIN(amount) FOR row_count IN ('1', '2', '3', '4', '5', '6'))
) checkoff
ON checkoff.settlement_nbr = td.settlement_nbr
AND checkoff.contract_nbr = td.contract_nbr
AND checkoff.pricing_order = td.pricing_order
AND checkoff.vehicle_disposition_nbr = td.vehicle_disposition_nbr
LEFT OUTER JOIN
(SELECT settlement_nbr,
contract_nbr,
pricing_order,
vehicle_disposition_nbr,
SUM(tax1_amount) AS tax1,
SUM(tax2_amount) AS tax2,
SUM(tax3_amount) AS tax3
FROM s1_settlement_ticket_epr_payee
GROUP BY settlement_nbr,
contract_nbr,
pricing_order,
vehicle_disposition_nbr
) epr
ON epr.settlement_nbr = td.settlement_nbr
AND epr.contract_nbr = td.contract_nbr
AND epr.pricing_order = td.pricing_order
AND epr.vehicle_disposition_nbr = td.vehicle_disposition_nbr,
s1_settlement_vehicle sv,
s1_contract c,
s1_contract_pricing cp,
s1_uom uom_s,
s1_uom uom_p,
s1_uom_conv_10000 uom,
s1_grainsmart_option g_o
WHERE s.settlement_nbr = td.settlement_nbr
AND td.contract_nbr = c.contract_nbr
AND td.contract_nbr = cp.contract_nbr
AND td.pricing_order = cp.pricing_order
AND td.settlement_nbr = sv.settlement_nbr
AND td.quantity_entry_nbr = sv.quantity_entry_nbr
AND uom_s.uom_code = s.uom_code
AND uom_p.uom_code = c.alt_price_uom
AND uom.from_uom = 'LB'
AND uom.to_uom = s.uom_code
AND (uom.commodity_id IS NULL OR
uom.commodity_id = s.commodity_id
)
AND c.contract_id > 0
GROUP BY s.settlement_nbr,
s.settlement_type,
c.contract_id,
td.contract_nbr,
s.uom_code,
uom_s.description,
c.alt_price_uom,
uom_p.description
) s
WHERE s1_settlement_ngc_split.settlement_nbr = s.settlement_nbr
;
However It gives this error: Could not execute statement. Syntax error near ')' on line 75 SQLCODE=-131 ODBC 3 State = "42000"
Of course, line 75 points to the PIVOT.
I thought I was following the syntax in the above mentioned article. Any suggestions would be appreciated. Murray
User | Count |
---|---|
82 | |
12 | |
10 | |
10 | |
10 | |
9 | |
8 | |
7 | |
5 | |
5 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.