LOCAL lni
* Guid tanımlaması için MAIN.PRG de 1 kez tanımlamak yeterli.
declare integer CoCreateGuid in ole32 as w32_CoCreateGuid;
string @GuidValue
CREATE CURSOR CrsTablo (Field1 C(02), Field2 C(02), Field3 C(02), Field4 C(02), Field5 C(02), Field6 C(02), Field7 C(02), Field8 C(02), Field9 C(02), Field10 C(02) )
FOR m.lni = 1 TO 500
INSERT INTO CrsTablo(Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8, Field9, Field10) ;
VALUES ;
(;
(Substr(FastGuid(),1,2)), ;
(Substr(FastGuid(),1,2)), ;
(Substr(FastGuid(),1,2)), ;
(Substr(FastGuid(),1,2)), ;
(Substr(FastGuid(),1,2)), ;
(Substr(FastGuid(),1,2)), ;
(Substr(FastGuid(),1,2)), ;
(Substr(FastGuid(),1,2)), ;
(Substr(FastGuid(),1,2)), ;
(Substr(FastGuid(),1,2));
)
ENDFOR
SELECT Distinct Field1 As Deger FROM CrsTablo ;
UNION ALL ;
SELECT Field2 FROM CrsTablo ;
UNION ALL ;
SELECT Field3 FROM CrsTablo ;
UNION ALL ;
SELECT Field4 FROM CrsTablo ;
UNION ALL ;
SELECT Field5 FROM CrsTablo ;
UNION ALL ;
SELECT Field6 FROM CrsTablo ;
UNION ALL ;
SELECT Field7 FROM CrsTablo ;
UNION ALL ;
SELECT Field8 FROM CrsTablo ;
UNION ALL ;
SELECT Field9 FROM CrsTablo ;
UNION ALL ;
SELECT Field10 FROM CrsTablo ;
INTO CURSOR CrsDistinct && Tüm Fieldların içerikleri sadece 1 sütunda ve her bir sütun değeri sadece 1 kez yazıldı.
SELECT Distinct ;
Deger, ;
Nvl(F1.Sayac,0) As Sayac1, ;
Nvl(F2.Sayac,0) As Sayac2, ;
Nvl(F3.Sayac,0) As Sayac3, ;
Nvl(F4.Sayac,0) As Sayac4 ;
FROM CrsDistinct ;
LEFT JOIN (Select Field1, Count(Field1) As Sayac FROM CrsTablo GROUP BY Field1) As F1;
ON CrsDistinct.Deger = F1.Field1 ;
LEFT JOIN (Select Field2, Count(Field2) As Sayac FROM CrsTablo GROUP BY Field2) As F2;
ON CrsDistinct.Deger = F2.Field2 ;
LEFT JOIN (Select Field3, Count(Field3) As Sayac FROM CrsTablo GROUP BY Field3) As F3;
ON CrsDistinct.Deger = F3.Field3 ;
LEFT JOIN (Select Field4, Count(Field4) As Sayac FROM CrsTablo GROUP BY Field4) As F4;
ON CrsDistinct.Deger = F4.Field4 ;
ORDER BY Deger
&& Not : Nvl(F1.Sayac,1) As Sayac1, ; ile .NULL. -> (0) değerlerini 1 yapabilirsin!
FUNCTION FastGuid
LOCAL lcGuidString
*!* declare integer CoCreateGuid in ole32 as w32_CoCreateGuid;
*!* string @GuidValue && GUID * pguid && Bir kez tanımla çok kez kullan
m.lcGuidString = 0h00000000000000000000000000000000
=w32_CoCreateGuid(@m.lcGuidString)
return strconv(m.lcGuidString,15)
ENDFUNC