- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下数据:
示例:
create table vdata
(
cola varchar(10),
colb varchar(10)
);
insert into vdata values('A','B'),('B','C'),('A','X'),('Z','L'),
('N','M'),('O','P'),('R','Z'),('X','Y'),('T','N'),('F','E'),('G','H');
看起来像:
select * from vdata;
cola colb
--------------
A B
B C
A X
Z L
N M
O P
R Z
X Y
T N
F E
G H
注意:现在我只想显示 cola
必须出现在 colb
中的数据 OR colb
必须出现在 cola
中,我想添加列以根据下一个中存在的值显示每个记录的行号记录。
预期结果:
RowNumbers cola colb
------------------------
1 A B
1 A X
1 B C
2 N M
3 R Z
2 T N
1 X Y
3 Z L
上述结果的解释:第一行的行号为 1
并再次分配给接下来的两条记录,因为 column(cola or colb)
有值 A 或 B
所以。给予第四条记录的行号 2
因为它没有任何值 A 或 B
并且将继续以相同的方式处理。并注意记录 7 有 X 和 Y
它的行号是 1
因为它与表中第 2 条记录的 A
相关 A 和 X
。
我的失败尝试:
SELECT
row_number() over(PARTITION BY cola order by cola) RowNumbers,
cola,
colb
FROM vdata
where cola in (select colb from vdata)
or colb in (select cola from vdata)
ORDER BY cola,colb
最佳答案
您需要表中的某种 id 来建立排序
create table #vdata
(
id int identity(1,1),
cola varchar(10),
colb varchar(10)
);
insert into #vdata values('A','B'),('B','C'),('A','X'),('Z','L'),
('N','M'),('O','P'),('R','Z'),('X','Y'),('T','N'),('F','E'),('G','H');
WITH Roots AS (
SELECT 1 AS level
,id
,id AS topid
,cola
,colb
FROM #vdata
UNION ALL
SELECT level + 1 AS level
,#vdata.id
,Roots.topid
,#vdata.cola
,#vdata.colb
FROM Roots
INNER JOIN #vdata
ON (#vdata.id > Roots.id)
AND (#vdata.cola = Roots.cola
OR #vdata.cola = Roots.colb
OR #vdata.colb = Roots.cola
OR #vdata.colb = Roots.colb)
)
, MaxLevel AS (
SELECT id
,topid
,DENSE_RANK() OVER (ORDER BY topid) AS RowNumbers
,cola
,colb
FROM Roots
WHERE level = (SELECT MAX(level) FROM Roots AS InnerRoots WHERE InnerRoots.id = Roots.id)
)
SELECT RowNumbers
,cola
,colb
FROM MaxLevel
ORDER BY RowNumbers
关于sql-server - SQL 服务器 2008 R2 : ROW_NUMBER(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26733152/
我正在使用 postgres 9.1 构建分页记分牌。 用户可以根据多个标准对记分板进行排序,他们可以按升序或降序排序。有一个功能可以让用户在记分牌的多个页面中找到“他们的行”,它必须反射(refle
我在练习中遇到了这个问题,我无法修复它,这让我发疯了......基本上我使用的是 SQLLite,所以我只能使用任何窗口函数来获得结果并且更痛苦的部分是已经创建的架构上没有唯一的 id。参见示例: *
语法: ROW_NUMBER() OVER([ <partition_by_clause>] <order_by_clause>) 备注: 
更新:事实上,请留下以下复杂的查询,请检查此查询。它说 Fetch 为 98%,而 Row_Number 中为 2%? Fetch 是 SQL Server 2012 的另一个营销关键字吗? ----
我需要使用以下查询向用户事件添加计数器: select PERSON_ID, TIMESTAMP, row_number() over (partition by PERSON_ID order
我有一张 table : Trip Stop Time ----------------- 1 A 1:10 1 B 1:16 1 B 1:20 1
我有以下存储过程返回 A , B , 并按降序计数。我正在尝试使用 ROW_NUMBER ,所以我可以分页记录,但我想要第一行号 1成为计数最高的记录,所以基本上,如果我返回一个包含 3 条记录的表并
在我的 sql 案例中,我在计算 row_number 的最大值时遇到了麻烦。 我将直接在 SQL Fiddle 示例上进行解释,因为我认为理解起来会更快:SQL Fiddle “OrderNumbe
我有这个运行良好的 SQL。 希望我的过滤器返回具有最高 UserSessionSequenceID 的最新唯一 SessionGuid。 问题是性能很差——即使我有很好的索引。 我怎样才能重写这个
希望有人可以在这里为我指明正确的方向。 请参阅下面的查询。 SELECT day_id,month_id,time_id, row_number() over (partition BY month_
请问函数row_number()总是以相同的方式对相同的数据进行排序? 最佳答案 不可以。SQL 中的排序不稳定,这意味着不会保留原始排序顺序。不能保证解析函数或 order by将为相同的键值以相同
我有一个用例,我需要在 PARTITION 上使用 ROW_NUMBER(): 就像是: SELECT Column1 , Column 2 ROW_NUMBER() OVER ( P
UPD:谢谢大家,话题结束, sleep 后我明白了一切=) 我在理解 OVER 子句和 ROW_NUMBER 函数时遇到问题。简单的表 - 名称和标记。我想计算每个名字的平均分数。 SELECT t
我有一个包含零的列和一个保留顺序的列,其中零表示数据片段之间的中断。这是例子 A Ord 1 1 1 2 0 3 0 4 0 5 1 6 1 7 1 8 0 9 1 10 我想要获得的是同一列,其中零
我有这个简单的查询,希望它是不言自明的。 SELECT ROW_NUMBER() OVER (PARTITION BY Price_Id ORDER BY date DESC) r, * FROM
请考虑此查询: SELECT num, * FROM ( SELECT OrderID, CustomerID, EmployeeID, OrderDate, Required
首先,我想提一下,我已经检查了所有其他提出的问题,没有一个与我的相似,所以我不认为它是重复的。 我有两个表格,“Article_tbl”到目前为止已超过 300,000 行,“ArticleZone_
我有一个非常简单的问题,但我正在使用 appInsights,并且似乎无法弄清楚如何在 aiql 或任何函数中复制 row_number() 函数(没有分区意义)。 我有综合浏览量表,我按 sessi
在 SQL 2005/2008 数据库中,我们有表 BatchMaster。列:RecordId bigint - 自动增量 id,BatchNumber bigint - 唯一非聚集索引,Batch
我正在搜索删除表中的重复条目,我看到了如下示例: CREATE TABLE Suppliers ( Id int identity (1,1), CompanyTitle nvarchar(1
我是一名优秀的程序员,十分优秀!