Ghayyas Awan Mahtaab Ответов: 1

О суммировании данных из таблиц twol SQL


Привет, CodeProject.

У меня есть 5 таблиц в моей базе данных.
1.Счетов
2. Прибытие Мастера
3. Детали Прибытия
4. Возвращение Мастера
5. Повторите Детали

Запись Стол
Partyid             Title
225                 Mushtaq
2211                Akram



Таблица Мастер Прибытии
ArrivalID         Adate         RefDate        PartyID
1                 24-Sep        24-Sep          225
2                 25-Sep        25-Sept         2211


Детали Прибытия Таблицы
ArrivalID          ItemID       ItemQty          ItemAMount
1                  1              10              500
1                  11             25              230
2                  10             45              70
2                  25             1               90
2                  1              5               25



Таблица ReturnMaster
ReturnID        REtDate       RefDate      PartyID
r1              24-Sep        24-Sep       225
R2              25-Sep        25-Sep       2211



Таблица ReturnDetails
ReturnID         ItemID        ItemQty    ItemAMount
1                50              10       250
1                51              20       350
2                50              9        70
2                51              8        60




Я хочу получить сводку по одной дате, например, 24 сентября. Данные Должны Быть Такими:
ArrivalDate      ArrivalRefDate      ArrivalID      PartyTitle      ArrivalAmount       ReturnAmount
24-Sep           24-Sep               1              225            730                 600



Имейте в виду, что возвращаемые данные должны быть связаны с датой прибытия RefDate и названием партии прибытия или ParyID.

данные одной стороны не должны переходить в строку другой стороны на основе основной даты. Где Refdate и PArtyID одинаковы в Arrivalmaster и returnMaster. эти данные должны быть в одной строке.

Что я уже пробовал:

Я могу получить результат в двух разных результатах запроса. но я не могу совместить результат в Сигле-Роу.

Maciej Los

Разместите свои данные вместо изображения.

Ghayyas Awan Mahtaab

Запись Стол
Название Partyid
225 Муштак
2211 Акрам


Таблица Мастер Прибытии
ArrivalID Adate RefDate PartyID
1 24-Sep 24-Sep 225
2 25-Sep 25-Sept 2211

Детали Прибытия Таблицы
ArrivalID Itemid Свойства ItemQty ItemAMount
1 1 10 500
1 11 25 230
2 10 45 70
2 25 1 90
2 1 5 25


Таблица ReturnMaster

ReturnID REtDate RefDate PartyID
r1 24-Sep 24-Sep 225
R2 25-Sep 25-Sep 2211


Таблица ReturnDetails
ReturnID Itemid Свойства ItemQty ItemAMount
1 50 10 250
1 51 20 350
2 50 9 70
2 51 8 60



Я хочу получить сводку по одной дате, например, 24 сентября. Данные Должны Быть Такими

ArrivalDate ArrivalRefDate ArrivalID PartyTitle ArrivalAmount ReturnAmount
24-Sep 24-Sep 1 225 730 600


Имейте в виду, что возвращаемые данные должны быть связаны с датой прибытия RefDate и названием партии прибытия или ParyID.

данные одной стороны не должны переходить в строку другой стороны на основе основной даты. Где Refdate и PArtyID одинаковы в Arrivalmaster и returnMaster. эти данные должны быть в одной строке.

Ghayyas Awan Mahtaab

Я не могу корректировать пробелы в данных. Извините, что я новичок на форуме.

Maciej Los

Не беспокойся. Я сделал это для тебя. Вы должны использовать теги, например <pre>some piece of code here</pre>

Ghayyas Awan Mahtaab

Спасибо, Чувак. Могу ли я получить решение от вас?

1 Ответов

Рейтинг:
12

Maciej Los

Это немного усложняется из-за того, что связь между прибытиями и возвратами была установлена только на PartyId Нет никакой точной связи между конкретным прибытием и возвращением.

В этот момент я смог добиться этого с помощью приведенного ниже запроса:

DECLARE @Accounts TABLE(Partyid INT, Title NVARCHAR(250))
INSERT INTO @Accounts(Partyid, Title)
VALUES(225, 'Mushtaq'), (2211, 'Akram');

DECLARE @ArrivalMaster TABLE(ArrivalID INT, Adate DATETIME, RefDate DATETIME, PartyID INT)
INSERT INTO @ArrivalMaster(ArrivalID, Adate, RefDate, PartyID)
VALUES(1, '2019-09-24', '2019-09-24', 225), (2, '2019-09-25', '2019-09-25', 2211);

DECLARE @ArrivalDetails TABLE(ArrivalID INT, ItemID INT, ItemQty INT, ItemAMount INT)
INSERT INTO @ArrivalDetails(ArrivalID, ItemID, ItemQty, ItemAMount)
VALUES(1, 1, 10, 500), (1, 11, 25, 230), (2, 10, 45, 70), (2, 25, 1, 90), (2, 1, 5, 25);

DECLARE @ReturnMaster TABLE(ReturnID INT, REtDate DATETIME, RefDate DATETIME, PartyID INT)
INSERT INTO @ReturnMaster(ReturnID, REtDate, RefDate, PartyID)
VALUES(1, '2019-09-24', '2019-09-24', 225), (2, '2019-09-25', '2019-09-25', 2211);

DECLARE @ReturnDetails TABLE(ReturnID INT, ItemID INT, ItemQty INT, ItemAMount INT)
INSERT INTO @ReturnDetails(ReturnID, ItemID, ItemQty, ItemAMount)
VALUES(1, 50, 10, 250), (1, 51, 20, 350), (2, 50, 9, 70), (2, 51, 8, 60);


SELECT am.ArrivalID, am.Adate ArrivalDate, am.RefDate ArrivalRefDate, a.Partyid PartyTitle, rm.ReturnID, ad.ArrivalAmount, rd.ReturnAmount
FROM @Accounts a
	LEFT JOIN @ArrivalMaster am ON a.Partyid = am.PartyID 
	LEFT JOIN (
			SELECT ArrivalID, SUM(ItemAmount) ArrivalAmount
			FROM @ArrivalDetails 
			GROUP BY ArrivalID
		) ad ON am.ArrivalID  = ad.ArrivalID
	LEFT JOIN @ReturnMaster rm ON a.Partyid = rm.PartyID 
	LEFT JOIN (
			SELECT ReturnID, SUM(ItemAMount) AS ReturnAmount
			FROM @ReturnDetails 
			GROUP BY ReturnID
		) rd ON rm.ReturnID  = rd.ReturnID 


Ghayyas Awan Mahtaab

@Мачей Лос
Спасибо, Чувак. Это работает на меня. шляпы прочь от тебя.

Maciej Los

Всегда пожалуйста.