Я пытаюсь создать отчет, который возвращает общее количество (столбец QTY
), как показано на скриншоте.
Мне нужен запросчтобы вернуть этот результат:
Логика:
- На основании столбца
ClientAccprofileID
и IsLinkingProfileCustody
столбец, мне нужно, когда IsLinkingProfileCustody
= 1 в профиле, а затем получить кол-во, где IsLinkingProfileCustody
= 1,
Как показано ниже
- Для ClientAccProfileID = 10184743, этоимеет две строки - одно значение столбца IsLinkingProfileCustody равно 1, а другое - 0, поэтому мне нужно получить Total QTY, когда IsLinkingProfileCustody = 1. Результат равен 66
Но когда IsLinkingProfileCustody = 0
, тогда получите общее количество QTYдля всех строк с одинаковыми значениями ClientAccprofileID
равно IsLinkingProfileCustody = 0
.
- . Для
ClientAccProfileID = 10202386
нет строк с IsLinkingProfileCustody
= 1, мне нужно получить totalQty, сгруппированный по ClientCustodyAccountID
, поэтомурезультат равен 143, поскольку в строках (2,3) он имеет то же значение в столбце ClientCustodyAccountID
.
Затем я назначаю максимум (TotalQuantity) для клиента, так как клиент имеетнесколько различных профилей, чтобы получить следующий результат.
Вот запрос:
SELECT vw_clientcustodyaccountsprofiles.clientcustodyaccountid,
vw_clientcustodyaccountsprofiles.clientid,
vw_clientcustodyaccountsprofiles.companycode,
vw_clientcustodyaccountsprofiles.islinkingprofilecustody,
clientsecuritiesbaldetails.qty
FROM vw_clientcustodyaccountsprofiles
INNER JOIN clientsecuritiesbal
ON vw_clientcustodyaccountsprofiles.clientcustodyaccountid =
clientsecuritiesbal.clientacccustodyid
INNER JOIN clientsecuritiesbaldetails
ON clientsecuritiesbal.clientsecuritiesbalid =
clientsecuritiesbaldetails.clientsecuritiesbalid
WHERE ( vw_clientcustodyaccountsprofiles.companycode IN ( '002', '003' ) )
AND ( clientsecuritiesbal.securityid = 319 )
AND ( clientsecuritiesbaldetails._securitiesbaltypeid IN ( 1, 10 ) )
AND ( vw_clientcustodyaccountsprofiles.clientid = 10123789 )
1
1
1