晕哦,我工作中经常需要把表二的格式变为表一的格式,我用的数据库是oracle,先decode,再sum,再group by,挺麻烦的,二楼 case when的方法虽然没试过,但感觉应该是可以实现的。本人坚信单凭SQL就可以实现了,大不了多套几层而已。记得N久以前学dbase的时候,list加某个参数就可以把行、列转过来的~可惜现在很多数据库都不支持了。
我明白楼主的意思了。 对于固定栏母的,比如你例子里产品、方法等等,这些是固定的话,可以这样做:SELECT A AS 产品, '' AS 方法, '' AS Other FROM Table1 WHERE A='产品' UNION SELECT '', A, '' FROM Table1 WHERE A='方法' UNION SELECT '', '', A FROM Table1 WHERE A='其他'
上面的SQL逻辑意义上有问题,改一下,明白这个意思就行了。 SELECT Field0 AS 产品, '' AS 方法, '' AS Other FROM Table1 WHERE Field1='产品' UNION SELECT '', Field0, '' FROM Table1 WHERE Field1='方法' UNION SELECT '', '', Field0 FROM Table1 WHERE Field1='其他'
对于固定栏母的,比如你例子里产品、方法等等,这些是固定的话,可以这样做:SELECT
A AS 产品,
'' AS 方法,
'' AS Other
FROM Table1
WHERE A='产品'
UNION
SELECT
'',
A,
''
FROM Table1
WHERE A='方法'
UNION
SELECT
'',
'',
A
FROM Table1
WHERE A='其他'
如果栏目不固定,目前我不知道单纯通过SQL怎么实现,我都是通过FastReport或者ReportMachine的交叉报表来完成的。
SELECT
Field0 AS 产品,
'' AS 方法,
'' AS Other
FROM Table1
WHERE Field1='产品'
UNION
SELECT
'',
Field0,
''
FROM Table1
WHERE Field1='方法'
UNION
SELECT
'',
'',
Field0
FROM Table1
WHERE Field1='其他'