Re: collapse the expanded strutcure by Anders
Anders
Wed Jan 10 06:26:20 CST 2007
Given two columns called code and ref, in your source table X :
In one step:
CREATE CURSOR x (code Char (6), ref Char(6))
* populate
*Then
* in one step:
SELECT * FROM ( ;
SELECT a1.CODE AS code_a, b1.CODE, c1.CODE, d1.CODE, e1.CODE , a1.ref ;
FROM x AS a1 ;
LEFT JOIN x AS b1 ON VAL(a1.CODE)*10=VAL(b1.CODE) ;
LEFT JOIN x AS c1 ON VAL(a1.CODE)*100=VAL(c1.CODE) ;
LEFT JOIN x AS d1 ON VAL(a1.CODE)*1000=VAL(d1.CODE) ;
LEFT JOIN x AS e1 ON VAL(a1.CODE)*10000=VAL(e1.CODE) ) AS A2 ;
WHERE A2.code_a = ;
(SELECT MIN(code_a) FROM A2 AS a3 WHERE A2.ref = a3.ref)
* In two steps:
SELECT a1.CODE AS CODE, b1.CODE, c1.CODE, d1.CODE, e1.CODE , a1.ref ;
FROM x AS a1 ;
LEFT JOIN x AS b1 ON VAL(a1.CODE)*10=VAL(b1.CODE) ;
LEFT JOIN x AS c1 ON VAL(a1.CODE)*100=VAL(c1.CODE) ;
LEFT JOIN x AS d1 ON VAL(a1.CODE)*1000=VAL(d1.CODE) ;
LEFT JOIN x AS e1 ON VAL(a1.CODE)*10000=VAL(e1.CODE) ;
INTO CURSOR A2
SELECT * FROM A2 WHERE code_a = ;
(SELECT MIN(code_a) FROM A2 AS a3 ;
WHERE A2.ref=a3.ref)
Result:
Code_a_a Code_a_b Code_b Code_c Code_d Ref
1 1 100 1000 10000 USA
11 11 1100 11000 .NULL. Japan
12 12 .NULL. .NULL. .NULL. Peter
121 121 12100 .NULL. .NULL. Mary_On
122 122 12200 .NULL. .NULL. Sharon_Li
SET NULLDISPLAY TO ''
-Anders
"Patrick" <someone@microsoft.com> wrote in message
news:eLm4hQJNHHA.4912@TK2MSFTNGP02.phx.gbl...
> Suppose a sample table (abc.dbf) contained the following data record:
>
> a b c d e title
> 1 USA
> 10 USA
> 100 USA
> 1000 USA
> 10000 USA
> 11 Japan
> 110 Japan
> 1100 Japan
> 11000 Japan
> 12 Peter
> 121 Mary On
> 1210 Mary On
> 12100 Mary On
> 122 Sharon Li
> 1220 Sharon Li
> 12200 Sharon Li
>
>
> How can I make into the following result:
> a b c d e title
> 1 10 100 1000 10000 USA
> 11 110 1100 11000 Japan
> 12 Peter
> 121 1210 12100 Mary On
> 122 1220 12200 Sharon Li
>
>
> The fields (a,b,c,d,e,title) are characters!!
>
> I am using Visual FoxPro 6.0
>
> Thanks and regards,
> Patrick
>
>