我正在尝试运行以下查询:
SELECT *
FROM CROSSTAB('SELECT a.marketing_product_group::VARCHAR
,(a.sales_year || '' - '' || a.sales_quater)::VARCHAR AS attribute
,sum(a.sales_value)::NUMERIC AS sales_value
FROM data_Warehouse.sales_summary a
WHERE a.customer_code = '' SCAND ''
AND a.invoice_date >= '' 2015 - 04 - 01 ''
GROUP BY a.marketing_product_group
,a.sales_year || '' - '' || a.sales_quater
ORDER BY a.sales_year || '' - '' || a.sales_quater')
AS CT(marketing_product_group VARCHAR
,period1 VARCHAR
,period2 VARCHAR
,period3 VARCHAR
,period4 VARCHAR)我在这个网站上读过许多项目,并试图改正它,但我仍然会发现一个可怕的错误:
返回和sql元组描述不兼容。
子查询以如下方式返回数据:
marketing_product_group ;attribute; sales_value
"K3" ; "2016-1" ;600.0900000000000000
"CASSETTES" ; "2016-1" ;291.0000000000000000
"ENDO FILES" ; "2016-1" ;254.2500000000000000
"NEOZYME" ;"2016-1" ;15.5300000000000000
"PANAVIA F" ;"2016-1" ;47.8600000000000000
"BOUTIQUE NIGHT";"2016-2" ;1012.5000000000000000
"ENDO MISC" ;"2016-2" ;20.1000000000000000
"GLOVES 17" ;"2016-2" ;617.2000000000000000
"DIATECH" ;"2016-2" ;8.1800000000000000
"" ;"2016-2" ;47.5000000000000000
"CARESHOP 1" ;"2016-2" ;14.4800000000000000
"CLASSIC 1" ;"2016-3" ;49.5000000000000000
"GLOVES 15" ;"2016-3" ;70.0000000000000000
"SOFLEX" ;"2016-4" ;103.2000000000000000
"OMNIA" ;"2016-4" ;64.0000000000000000它可能是如此简单的东西,我已经飞过它?
发布于 2016-02-18 11:30:05
因为您的值是强制转换的,所以numeric
sum(a.sales_value)::NUMERIC AS sales_value您的输出列也需要是numeric:
...
AS CT(marketing_product_group VARCHAR
,period1 NUMERIC
,period2 NUMERIC
,period3 NUMERIC
,period4 NUMERIC )这里还有其他一些奇怪的地方,但是由于您没有提供适当的信息(Postgres版本,表定义),我将在此保留它。
基本要素:
https://stackoverflow.com/questions/35477566
复制相似问题