如何在不使用Sybase / Perl中的游标的情况下从表/文件中的2行中获取结果集中的一行

时间:2010-08-11 21:27:42

标签: sql perl sybase

我有一张桌子T,上面有A,B,C和C列。 D如下:

A  B  C   D  
===============
A1 B1 USD LIBOR  
A1 B2 JPY FIXED  
A2 B3 USD LIBOR  
A2 B4 EUR FIXED  
A3 B5 JPY FIXED  
A3 B6 USD LIBOR   
  1. 表每个“A”总有2行,不同的值为“B”。

  2. “B”是独一无二的

  3. “A” - varchar(10),“B” - varchar(8),“C” - varchar(3),“D” - varchar(5)

  4. 验证规则将列限制为以下格式 - “A”,“B”,“D” - 字母数字 “C” - 字母

  5. 我需要从表中提取以下结果 -

    结果集1:

    A1 USD LIBOR JPY FIXED  
    A2 USD LIBOR EUR FIXED  
    A3 JPY FIXED USD LIBOR  
    

    结果集2:

    USD LIBOR JPY FIXED  
    USD IBOR  EUR FIXED
    

    我希望避免使用游标,除非有任何其他解决方案。

    我可以将此表提取到文件中并使用perl来获取结果吗?

    请帮忙......

1 个答案:

答案 0 :(得分:3)

可以使用临时表和多个更新来完成,但我认为在你的百万行表中不会很好。

如果您的数据总是每个“A”有2行,具有不同的“B”值并且具有可预测的大小(列宽)或格式(因此您可以使用特殊的熟食店)那么这样的东西可能会起作用

SELECT A, MIN(B), MAX(B), right( MIN(B + C), 5), right( MIN(B + D), 5), right( MAX(B + C), 5), right(MAX(B + D), 5) FROM my_table GROUP BY A