Получить итоги на основе определенных фильтров и пометить в одном столбце SQL Server - PullRequest
0 голосов
/ 16 октября 2019

enter image description here

Я пытаюсь создать отчет, который возвращает общее количество (столбец QTY), как показано на скриншоте.

Мне нужен запросчтобы вернуть этот результат:

enter image description here

Логика:

  • На основании столбца 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...