SQL查询转换表

时间:2011-07-20 11:20:53

标签: sql database excel sybase-ase

我在转换一个看起来像这样的表

时遇到了问题
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
  • 鉴于任何城市没有更多和3个分销商

我尝试了自我加入,但我得到了重复记录,请提供建议。

请告诉我这是否可以在excel中完成,因为这仅用于报告目的

3 个答案:

答案 0 :(得分:2)

答案 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)

我认为这种转换最好在报表编写器中完成,而不是在数据库中完成。