我正在使用SQL Server 2008。我的表不包含任何唯一列;如何从中获取交替行?
SQL Server数据表:
+-----+--------+
| id | name |
|-----+--------|
| 1 | abc |
| 2 | pqr |
| 2 | pqr |
| 3 | xyz |
| 4 | lmn |
| 5 | efg |
| 5 | efg |
+-----+--------+
由于我们必须至少提供一个与问题相关的工作建议,所以我尝试了下面的代码;这在从大量数据中提取数据时不是一种合适的技术。
试用版:
create table #tmp
(
id int, name varchar(10), srNo int
)
insert into #tmp
select
id, name,
ROW_NUMBER() OVER (ORDER BY id) % 2 as srNo --,alternate rows
from
Employee
select *
from #tmp
where srNo = 1 --or srNo = 0
以上查询给出了备用行,即第1、第3、第5行 OR 第2、第4、第6等。
请帮助我以正当的方式*无#tmp
* 地实现目标!
7条答案
按热度按时间sc4hvdpw1#
您可以只将select语句用作内联视图,而不需要#tmp表。
SqlFiddle函数
dxxyhpgq2#
--从表中提取ALTERNATE记录(偶数)
对于例如:从人力资源.员工中选择 *,其中业务实体ID % 2 = 0
--从表中提取ALTERNATE记录(奇数)
对于例如:从人力资源.员工中选择 *,其中业务实体ID % 2 = 1
8aqjt8rx3#
我将student作为表名。
这是我的答案-〉
1.对于偶数行号-
> SELECT id from (SELECT rowno, id from student) where mod(rowno,2)=1
1.对于奇数行-
> SELECT id from (SELECT rowno, id from student) where mod(rowno,2)=1
个wecizke34#
同样也可以使用**
having
**子句实现;但是它增加了group by
任务:qvk1mo1f5#
您可以只使用select语句作为内联视图,而不需要#tblCities表。
hpxqektj6#
uyto3xhc7#
您将拥有
下面是将按值更改分组的查询
结果
演示https://dbfiddle.uk/6Ajy3H5O