我在转换一个看起来像这样的表
时遇到了问题city | distributor | phno
---------------------------------
new york xxx 12345
new york yyy 12312
new york zzz 12313
london aaa 12315
london bbb 11111
hong konk ccc 12311
到
city | distributor1 | phno1 | distributor2 | phno2 | distributor3 | phno3
-----------------------------------------------------------------------------
new york xxx 12345 yyy 12312 zzz 12313
london aaa 12315 bbb 11111 0 0
hong konk ccc 12311 0 0 0 0
我尝试了自我加入,但我得到了重复记录,请提供建议。
请告诉我这是否可以在excel中完成,因为这仅用于报告目的
答案 0 :(得分:2)
您也可以在SQL中PIVOT表。
答案 1 :(得分:1)
我不确定它是否在Sybase SQL中有效,但我仍然会在其他SQL服务器中以这样的方式开始:
SELECT * FROM
(SELECT city FROM table GROUP BY city) AS c
LEFT JOIN (SELECT TOP 1 distributor AS distributor1, phno AS phno1
FROM table c1 WHERE c1.city = c.city
ORDER BY distributor ASC) AS c1
ON true
LEFT JOIN (SELECT TOP 2 distributor AS distributor2, phno AS phno2
FROM table c2 WHERE c2.city = c.city
ORDER BY distributor ASC) AS c2
ON distributor1 != distributor2
LEFT JOIN (SELECT TOP 3 distributor AS distributor3, phno AS phno3
FROM table c3 WHERE c3.city = c.city
ORDER BY distributor ASC) AS c3
ON distributor1 != distributor3 AND distributor2 != distributor3
答案 2 :(得分:1)
我认为这种转换最好在报表编写器中完成,而不是在数据库中完成。