В ходе работы появлялись задачи по переносу информацию из одной БД в другую. Программная среда работает под управлением MS FoxPro и означает, что данные находятся в файлах DBF. Для этого приходилось писать различные запросы для изымания информации из БД и размещении её в файле XLS. Решил поделиться данными записями, возможно кому-то понадобиться.
1)
SELECT C.LIC ;
,C.LICERC ;
,C.AID ;
,A.IDSA ;
,A.KODST ;
,A.VIDST ;
,A.STATUS ;
,A.TIP ;
,A.MODEL_PU ;
,A.MARKA_PU ;
,A.ZNOM ;
,DTOC(A.Dat_akt ) Dat_akt ;
,DTOC(A.Dat_p1 ) Dat_p1 ;
,DTOC(A.Dat_p2 ) Dat_p2 ;
from dat_s_a A LEFT JOIN dataa C ON A.aid = C.aid ;
WHERE A.STATUS = 'Проверка' ;
ORDER BY A.STATUS
,C.LICERC ;
,C.AID ;
,A.IDSA ;
,A.KODST ;
,A.VIDST ;
,A.STATUS ;
,A.TIP ;
,A.MODEL_PU ;
,A.MARKA_PU ;
,A.ZNOM ;
,DTOC(A.Dat_akt ) Dat_akt ;
,DTOC(A.Dat_p1 ) Dat_p1 ;
,DTOC(A.Dat_p2 ) Dat_p2 ;
from dat_s_a A LEFT JOIN dataa C ON A.aid = C.aid ;
WHERE A.STATUS = 'Проверка' ;
ORDER BY A.STATUS
2)
SELECT A.Street, A.HOME ,A.FLAT ;
, COUNT(*) AS KKK ;
FROM dataa A ;
GROUP BY A.Street, A.HOME ,A.FLAT HAVING COUNT(*) > 1 ;
order by A.HOME ;
INTO CURSOR CUR1
SELECT * FROM dataa A INTO CURSOR CUR2
SELECT CUR2.LIC, CUR2.LICERC,CUR1.Street, CUR1.HOME, CUR1.FLAT , CUR1.KKK FROM CUR1 LEFT JOIN CUR2 ON CUR1.Street = CUR2.Street AND CUR1.HOME = CUR2.HOME AND CUR1.FLAT = CUR2.FLAT ;
WHERE CUR1.KKK
, COUNT(*) AS KKK ;
FROM dataa A ;
GROUP BY A.Street, A.HOME ,A.FLAT HAVING COUNT(*) > 1 ;
order by A.HOME ;
INTO CURSOR CUR1
SELECT * FROM dataa A INTO CURSOR CUR2
SELECT CUR2.LIC, CUR2.LICERC,CUR1.Street, CUR1.HOME, CUR1.FLAT , CUR1.KKK FROM CUR1 LEFT JOIN CUR2 ON CUR1.Street = CUR2.Street AND CUR1.HOME = CUR2.HOME AND CUR1.FLAT = CUR2.FLAT ;
WHERE CUR1.KKK
3)
select A.AID, A.LIC, A.LICERC,B.KAT P1 , "Подогрев воды" AS P2, B.TNPL93 AS P3 FROM datab B LEFT JOIN dataa A ON A.KAT= B.KAT WHERE B.TNPL93 <> 0 ;
UNION ALL ;
select A.AID, A.LIC, A.LICERC,B.KAT P1 , "Холодное водоснабжение ФВ" AS P2, B.OPLS51 AS P3 FROM datab B LEFT JOIN dataa A ON A.KAT= B.KAT WHERE B.OPLS51 <> 0;
UNION ALL ;
select A.AID, A.LIC, A.LICERC,B.KAT P1 , "Водоотведение по холодной воде" AS P2, B.OPLS52 AS P3 FROM datab B LEFT JOIN dataa A ON A.KAT= B.KAT WHERE B.OPLS52 <> 0;
ORDER BY 2
UNION ALL ;
select A.AID, A.LIC, A.LICERC,B.KAT P1 , "Холодное водоснабжение ФВ" AS P2, B.OPLS51 AS P3 FROM datab B LEFT JOIN dataa A ON A.KAT= B.KAT WHERE B.OPLS51 <> 0;
UNION ALL ;
select A.AID, A.LIC, A.LICERC,B.KAT P1 , "Водоотведение по холодной воде" AS P2, B.OPLS52 AS P3 FROM datab B LEFT JOIN dataa A ON A.KAT= B.KAT WHERE B.OPLS52 <> 0;
ORDER BY 2
4)
select A.AID, A.LIC, A.LICERC, A.Street , A.Home , A.Flat , D.KAT P1 , "ТО ВКГО" AS P2, LPLSTR P3 , IIF ( A.OPLKV = A.OPL AND A.OPL <> 0, 0 , (LPLSTR / A.OPLKV * A.OPL)) AS P4, A.OPLKV OPL_KV , A.OPL OPL_ , LPLSTR TARIFF FROM datad D LEFT JOIN dataa A ON A.LGOTA= D.KAT WHERE LPLSTR <> 0 ;
ORDER BY 2
ORDER BY 2
5)
select LS_DGH P1 , "UST_ODPU" AS P2 , UST_ODPU AS P3 FROM PER WHERE VAL(UST_ODPU) <> 0 ;
UNION ALL ;
select LS_DGH P1 , "DOP_USL" AS P2 , DOP_USL AS P3 FROM PER WHERE VAL(DOP_USL ) <> 0 ;
UNION ALL ;
select LS_DGH P1 , "DOMOFON" AS P2 , DOMOFON AS P3 FROM PER WHERE VAL(DOMOFON ) <> 0 ;
UNION ALL ;
select LS_DGH P1 , "TO_VKGO" AS P2 , TO_VKGO AS P3 FROM PER WHERE VAL(TO_VKGO ) <> 0 ;
Order by LS_DGH
Вы должны авторизоваться, чтобы отправлять комментарии на этом сайте - пожалуйста, либо авторизуйтесь, либо - если вы еще не зарегистрированы - кликните здесь , чтобы зарегистрироваться