ProductCode YTMAch YTMTg MTDTg YTDPer MTDPer
PrimaxX 0 0 0 0 0
SuperGrip 0 0 0 0 0
WC 0 0 0 0 0
WP 0 0 0 0 0
我想将此行转换为列,并将列转换为行
答案 0 :(得分:2)
一种方法是使用<background>
<band height="702" splitType="Stretch">
</band>
</background>
<title>
<band height="2" splitType="Stretch"/>
</title>
<pageHeader>
<band height="2" splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band height="2" splitType="Stretch"/>
</columnHeader>
<detail>
<band height="830" splitType="Stretch">
和<background>
<band height="702" splitType="Stretch">
<textField>
<reportElement mode="Transparent" x="0" y="0" width="0" height="0" forecolor="#DFDFDF">
<printWhenExpression>true</printWhenExpression>
</reportElement>
</textField>
</band>
</background>
case
答案 1 :(得分:0)
在标准SQL中,您可以对每列使用UNION ALL和selects。
但这是一个比较罗word的方法。
诸如Ajay的MS Sql Server解决方案之类的数据库特定方法应该更简洁。
例如:
select Metric,
sum(case when ProductCode = 'PrimaxX' then Value end) as PrimaxX,
sum(case when ProductCode = 'SuperGrip' then Value end) as SuperGrip,
sum(case when ProductCode = 'WC' then Value end) as WC,
sum(case when ProductCode = 'WP' then Value end) as WP
from
(
select 'YTMAch' as Metric, ProductCode, YTMAch as Value from yourtable
union all
select 'YTMTg', ProductCode, YTMTg from yourtable
union all
select 'MTDTg', ProductCode, MTDTg from yourtable
union all
select 'YTDPer', ProductCode, YTDPer from yourtable
union all
select 'MTDPer', ProductCode, MTDPer from yourtable
) q
group by Metric;