Ваш запрос пока выглядит хорошо. Чтобы проверить, использует ли продукт клиент впервые, вы можете использовать ROW_NUMBER()
, чтобы присвоить ранг каждой записи в группах записей с одинаковым UserId
и одинаковым Product
, упорядоченных по Date
. Когда номер строки 1
, вы знаете, что имеете дело с новым продуктом.
SELECT
UA.UserId,
UA.Product,
UA.Client,
CASE
WHEN ROW_NUMBER() OVER(PARTITION BY UA.UserId, UA.Product ORDER BY UA.Date) = 1
THEN true
ELSE false
END AS IsNewProduct,
CASE
WHEN UA.Date = FLS.Date
THEN true
ELSE false
END AS IsNewClient
FROM UserActivity as UA
LEFT JOIN FirstLastSeen AS FLS
ON UA.UserId = FLS.UserId
AND UA.Product = FLS.Product
AND UA.Client = FLS.Client;
Эта демонстрация на DB Fiddle с вашими примерами возвращает:
| UserId | Product | Client | IsNewProduct | IsNewClient |
| ------ | ------- | ----------- | ------------ | ----------- |
| John | Bank | Mobile App | 1 | 0 |
| John | Bank | Desktop App | 0 | 1 |
| Sally | Gym | Web App | 1 | 1 |
Вы не упомянули, к какому виджету вы хотите добавить панели инструментов, но в целом вы можете добавить столько панелей инструментов, сколько хотите:
var panel = new Ext.Panel();
var tool1 = new Ext.Toolbar({...});
var tool2 = new Ext.Toolbar({...});
panel.add(tool1);
panel.add(tool2);
...
Если вы хотите добавить дополнительную панель инструментов вверху сетки, затем найдите компонент панели сетки и добавьте к нему панели инструментов. Это может выглядеть так (не проверено):
tPanel = grid.getTopToolbar().ownerCt; // get top toolbar's container panel
tPanel.add(anotherToolbar);
Я не уверен, возможно ли это или нет, но то, что вы всегда можете сделать, это разделить северную область (например, с использованием макета границы) на две строки, используя макет строки. Затем вы можете добавить одну панель инструментов в верхний ряд, а другую - во второй ряд.
I'm not sure if this is exactly what you are looking for but Toolbars has been revamped in Ext 3.0.
You might want to take a peek at: http://extjs.com/deploy/ext-3.0-rc1.1/examples/toolbar/toolbars.html
Посмотрите на эту нить на форуме EXT. Он описывает, как создать панель инструментов и сделать его на существующую панель инструментов.
-121-233