我有一张3柱和4排的桌子。
Actions actions = new Actions(driver);
WebElement menu = driver.findElement(By.xpath("//*[@id='menu-links']/a/div[3]"));
actions.moveToElement(menu);
WebElement subMenu = driver.findElement(By.xpath("//*[@id='menu-links']/ul/li[2]/a"));
actions.moveToElement(subMenu);
actions.click().build().perform();
Col1 Col2 Col3
Row1 A1 B1 1
Row2 A2 B2 0
Row3 A3 B3 3
Row4 A4 B4 1
返回:
select * from [table]
我想要一个选择:
A1 B1 1
A2 B2 0
A3 B3 3
A4 B4 1
Col3给出行返回的数量。
答案 0 :(得分:5)
从数字表开始......每个数字都有一行的表格,最高可达Col3
中可能的最大值。它看起来像这样:
表:数字
Value ----- 1 2 3 4 5 ...
然后你可以使用不等式JOIN
到这个表:
SELECT Col1, Col2, Col3
FROM [table] t
INNER JOIN NUMBERS n ON n.Value <= t.Col3
这将使您的Row3值与Numbers
表匹配3次,在结果中复制该行,而Row2值不匹配Numbers表中的任何记录,将其从结果中删除
您可以在此处查看几个用于生成Numbers
表格的选项:
What is the best way to create and populate a numbers table?
使用该问题的选项6:
WITH Numbers AS (
SELECT TOP 10000 row_number() over(order by t1.number) as [Value]
FROM master..spt_values t1
CROSS JOIN master..spt_values t2
)
SELECT Col1, Col2, Col3
FROM [table] t
INNER JOIN NUMBERS n ON n.Value <= t.Col3
请注意,这对于您的示例数据来说太过分了,只有3
。对于任何小于50的东西,你可以只对表格进行硬编码。我假设你的真实数据要高得多。