Показать сообщение отдельно
Старый 15.02.2009, 19:39   #14  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Цитата:
Сообщение от oip Посмотреть сообщение
CustId = "";
Можно ли без серьезных трудностей перевести нижеуказанный SQL запрос в Аксаптовский типа while........
Для использования в // Поговорим об ADO

DECLARE @DD1 DATETIME /* Начальная дата */
DECLARE @DD2 DATETIME /* Начальная дата */
DECLARE @AccountNum Varchar(13) /* Подразделение */

SET @DD1 = '20081001'
SET @DD2 = '20081031'
SET @AccountNum = '%000155%'


select dd.Контрагент, sum(dd.Клиент_Н) AS Клиент_Н
, sum(dd.Поставщик_Н) AS Поставщик_Н
, (sum(dd.Клиент_Н) - sum(dd.Поставщик_Н)) AS Сводная_Н
, sum(dd.Клиент_О) As Клиент_О
, sum(dd.Поставщик_О) AS Поставщик_О
, (sum(dd.Клиент_О) - sum(dd.Поставщик_О)) AS Сводная_О
, ((sum(dd.Клиент_Н) - sum(dd.Поставщик_Н)) - (sum(dd.Клиент_О) - sum(dd.Поставщик_О))) AS Разница
from


(Select
a.Название AS Контрагент
--, a.Клиент, ' ' AS Поставщик, a.PK
, sum(a.НачСальдо) AS Клиент_Н, null AS Поставщик_Н
, sum(a.Оборот)AS Клиент_О, null AS Поставщик_О
from
(select ct.AccountNum AS Клиент, ct2.Name AS Название, ct2.VendAccount AS PK, sum(ct.AmountMST)AS НачСальдо, null As Оборот
from CustTrans ct, CustTable ct2
where ct.TransDate < @DD1
AND ct.AccountNum = ct2.AccountNum
Group by
--Клиент
ct.AccountNum, ct2.Name, ct2.VendAccount


UNION

select ct1.AccountNum AS Клиент, ct3.Name AS Название, ct3.VendAccount AS PK, null AS НачСальдо, sum(ct1.AmountMST)As Оборот
from CustTrans ct1, CustTable ct3
where (ct1.TransDate between @DD1 and @DD2)
AND ct1.AccountNum = ct3.AccountNum
Group by
--Клиент
ct1.AccountNum, ct3.Name, ct3.VendAccount
)
AS a
Group by a.Клиент, a.Название, a.PK
--Order by a.Клиент




UNION




Select
--a.Клиент, a.Название, a.PK, sum(a.НачСальдо), sum(a.Оборот)
aa.Название AS Контрагент
--, a.Клиент, ' ' AS Поставщик, a.PK
, null AS Клиент_Н, sum(aa.НачСальдо) AS Поставщик_Н
, null AS Клиент_О, sum(aa.Оборот) AS Поставщик_О


from
(select ct.AccountNum AS Клиент, ct2.Name AS Название, ct2.CustAccount AS PK, sum(ct.AmountMST)AS НачСальдо, null As Оборот
from VendTrans ct, VendTable ct2
where ct.TransDate < @DD1
AND ct.AccountNum = ct2.AccountNum
Group by
--Клиент
ct.AccountNum, ct2.Name, ct2.CustAccount


UNION

select ct1.AccountNum AS Клиент, ct3.Name AS Название, ct3.CustAccount AS PK, null AS НачСальдо, sum(ct1.AmountMST)As Оборот
from VendTrans ct1, VendTable ct3
where (ct1.TransDate between @DD1 and @DD2)
AND ct1.AccountNum = ct3.AccountNum
Group by
--Клиент
ct1.AccountNum, ct3.Name, ct3.CustAccount
)
AS aa
Group by aa.Клиент, aa.Название, aa.PK
--Order by aa.Клиент ;
) AS dd
Group by Контрагент


За ранее благодарен.
__________________
Александр