mhamedm2008
جمعه 08 بهمن 1395, 17:18 عصر
با سلام
اول عذر خواهی کنم به خاطر اینکه موضوع خوبی نتونستم برای تاپیک انتخاب کنم.
من یک دستور select نوشتم. یک قسمت اون درست کار میکنه ولی قسمت دیگه عملکرد نامناسبی داره
SELECT SUM(sanad_master.bed) AS bed1, SUM(sanad_master.bes) AS bes1, hesab_group.group_kod, sanad_master.sal,
(select SUM(sanad_master.bes) FROM hesab_group LEFT OUTER JOIN sanad_master ON hesab_group.group_kod = sanad_master.group_hesab where sanad_master.tarikh between '950101' and '950631' ) as bed2,
(select SUM(sanad_master.bes) FROM hesab_group LEFT OUTER JOIN sanad_master ON hesab_group.group_kod = sanad_master.group_hesab where sanad_master.tarikh between '950101' and '950631' ) as bes2,
(select SUM(sanad_master.bes) FROM hesab_group LEFT OUTER JOIN sanad_master ON hesab_group.group_kod = sanad_master.group_hesab where sanad_master.tarikh between '950631' and '951231' ) as bed3,
(select SUM(sanad_master.bes) FROM hesab_group LEFT OUTER JOIN sanad_master ON hesab_group.group_kod = sanad_master.group_hesab where sanad_master.tarikh between '950631' and '951231' ) as bes4
FROM hesab_group LEFT OUTER JOIN
sanad_master ON hesab_group.group_kod = sanad_master.group_hesab
GROUP BY hesab_group.group_kod, sanad_master.sal
HAVING (NOT (SUM(sanad_master.bed) IS NULL)) AND (NOT (SUM(sanad_master.bes) IS NULL)) AND (sanad_master.sal = 95)
همانطور که مشاهده می کنید این دستور 6 ستون بستانکار و بدهکار با نام های bes1 bes2 bes3 و bed1 bed2 bed3 ایجاد میکنه که با جدول حساب های جوین شده است.
مطابق شکل زیر، ستون bed1 و bed 2 به درستی عمل می کنه و حساب هایی که گردش دارند را جمع می بنده و نشون میده
حالا مشکل من توی ستون های دوم و سوم هست که باید جمع رو توی یک بازه زمانی خاص حساب کنه.
به خاطر اینکه برخی از حساب ها گردش ندارند و باید جمع ستون و خالی و یا null بزاره. در صورتی که توی کل ردیف ها جمع رو نمایش میده.
خودم میدم مشکل از دستور select های تو در توی من هست. ولی نمی دونم چه جوری باید اصلاح کنم که حساب هایی که توی اون بازه زمانی گردشی ندارند و باید null بزنه ولی میاد توی ردیف ها چاپ می کنه
با تشکر
144323
اول عذر خواهی کنم به خاطر اینکه موضوع خوبی نتونستم برای تاپیک انتخاب کنم.
من یک دستور select نوشتم. یک قسمت اون درست کار میکنه ولی قسمت دیگه عملکرد نامناسبی داره
SELECT SUM(sanad_master.bed) AS bed1, SUM(sanad_master.bes) AS bes1, hesab_group.group_kod, sanad_master.sal,
(select SUM(sanad_master.bes) FROM hesab_group LEFT OUTER JOIN sanad_master ON hesab_group.group_kod = sanad_master.group_hesab where sanad_master.tarikh between '950101' and '950631' ) as bed2,
(select SUM(sanad_master.bes) FROM hesab_group LEFT OUTER JOIN sanad_master ON hesab_group.group_kod = sanad_master.group_hesab where sanad_master.tarikh between '950101' and '950631' ) as bes2,
(select SUM(sanad_master.bes) FROM hesab_group LEFT OUTER JOIN sanad_master ON hesab_group.group_kod = sanad_master.group_hesab where sanad_master.tarikh between '950631' and '951231' ) as bed3,
(select SUM(sanad_master.bes) FROM hesab_group LEFT OUTER JOIN sanad_master ON hesab_group.group_kod = sanad_master.group_hesab where sanad_master.tarikh between '950631' and '951231' ) as bes4
FROM hesab_group LEFT OUTER JOIN
sanad_master ON hesab_group.group_kod = sanad_master.group_hesab
GROUP BY hesab_group.group_kod, sanad_master.sal
HAVING (NOT (SUM(sanad_master.bed) IS NULL)) AND (NOT (SUM(sanad_master.bes) IS NULL)) AND (sanad_master.sal = 95)
همانطور که مشاهده می کنید این دستور 6 ستون بستانکار و بدهکار با نام های bes1 bes2 bes3 و bed1 bed2 bed3 ایجاد میکنه که با جدول حساب های جوین شده است.
مطابق شکل زیر، ستون bed1 و bed 2 به درستی عمل می کنه و حساب هایی که گردش دارند را جمع می بنده و نشون میده
حالا مشکل من توی ستون های دوم و سوم هست که باید جمع رو توی یک بازه زمانی خاص حساب کنه.
به خاطر اینکه برخی از حساب ها گردش ندارند و باید جمع ستون و خالی و یا null بزاره. در صورتی که توی کل ردیف ها جمع رو نمایش میده.
خودم میدم مشکل از دستور select های تو در توی من هست. ولی نمی دونم چه جوری باید اصلاح کنم که حساب هایی که توی اون بازه زمانی گردشی ندارند و باید null بزنه ولی میاد توی ردیف ها چاپ می کنه
با تشکر
144323