我有如下数据:
['146', '147', '155', '156', '156 Sportwagon', '159', '159 Sportwagon', '164', '166', '2000', '4C', '8C', 'Brera', 'Giulia', 'Giulietta', 'GT', 'GTV', 'MiTo', 'Spider', 'Stelvio']
并且我正试图获得如下所示的结果:
Customer Product Amount
A Table 500
A Table 300
A Chair 100
B Rug 50
B Chair 200
在MSSQL中,我可以使用XML PATH('')并轻松到达那里。我对Oracle不那么精通。我尝试使用LISTAGG,这是我得到的:
Customer Product Amount
A Table, Chair 900
B Rug, Chair 250
所以我在Product字符串中得到了重复项,并且总金额是相同的。在这里研究一些类似的问题时,我找不到如何同时进行聚合和不同的listagg。这是我的尝试:
Customer Product Amount
A Table,Table,Chair 1150
B Rug, Chair 1150
这会稍微靠近并产生以下结果:
Select
Customer
,sum(Amount) as "Amount"
,LISTAGG(Product, ', ') WITHIN GROUP(Order by CUSTOMER) as "TestingThis"
From
(Select
A.Customer
,B.Product
,B.Amount
,Row_Number() over (Partition by A.Customer, B.Product order by A.Customer) as rn
From
CustomerTable A
left join ProductTable B
on A.ID = B.ID
Group by
A.Customer
,B.Product
,B.Amount
)
where rn = 1
Group by Customer
请注意,它仅在rn = 1时才进行求和,因此它缺少其余的金额。
使用Oracle 11g,因此如果他们在新版本中为LISTAGG提供了一些新颖的“独特”功能,那么它对我没有帮助。
从MSSQL到PLSQL的转换很痛苦。这在MSSQL中非常容易做到。我不明白如果无法轻松获得独特的价值,LISTAGG可能甚至会有用吗?
除了独特的LISTAGG之外,我在这里找到的最接近的解决方案没有考虑进行其他合计,例如总和。他们只是说,“如果您需要使用LISTAGG进行另一次聚合,那会很棘手”。
好吧,这正是我所需要的。 :(
答案 0 :(得分:1)
这会吗?
WebDriverWait wait = new WebDriverWait(driver, LOADING_TIMEOUT);
WebElement webElement;
try {
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
webElement = wait.until(elementToBeClickable(By.id(id)));
} catch (TimeoutException ex) {
// Delay any further interaction until the timeout has been restored
webElement = null;
} finally {
driver.manage().timeouts().implicitlyWait(DEFAULT_TIMEOUT,
TimeUnit.SECONDS);
}
if (webElement != null)
webElement.click();
else
// Close loading window