Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在分区上的稠密秩()中,可以得到两个相同的顺序位置(或行号)吗?_Sql_Sql Server_Sql Server 2016_Common Table Expression - Fatal编程技术网

Sql 在分区上的稠密秩()中,可以得到两个相同的顺序位置(或行号)吗?

Sql 在分区上的稠密秩()中,可以得到两个相同的顺序位置(或行号)吗?,sql,sql-server,sql-server-2016,common-table-expression,Sql,Sql Server,Sql Server 2016,Common Table Expression,我的问题:在哪种情况/条件下,我下面的代码将返回两个相同的行,两个行的顺序_POSITION=1 不幸的是,我无法重现我的问题,但早些时候我正在处理一个生产问题,其中我的查询返回了重复的问题。这是两条相同的记录,两条记录的顺序_POSITION=1。这怎么可能呢?即使所有列都相同,这是否应该返回两个具有不同顺序位置的相同行?(行号) 如果两行具有相同的a.name、a.ORDER\u DATE和a.ORDER\u TIME,则densite\u rank将为它们提供相同的编号 densite\u

我的问题:在哪种情况/条件下,我下面的代码将返回两个相同的行,两个行的顺序_POSITION=1

不幸的是,我无法重现我的问题,但早些时候我正在处理一个生产问题,其中我的查询返回了重复的问题。这是两条相同的记录,两条记录的顺序_POSITION=1。这怎么可能呢?即使所有列都相同,这是否应该返回两个具有不同顺序位置的相同行?(行号)


如果两行具有相同的
a.name
a.ORDER\u DATE
a.ORDER\u TIME
,则
densite\u rank
将为它们提供相同的编号

densite\u rank
使用
partition by
子句中提到的列对行进行分组,并尝试使用
order by
子句中的列对行进行编号。但是,如果同一组中的两行在
order by
子句中使用的列中具有相同的值,则会为它们提供相同的数字

如果需要不同的编号,则使用
行编号
而不是
密集排列

密集排列()
将返回相同的值,例如,如果在同一
A.Name
中,多条记录的
订单日期
订单时间
值相同,则使用
行编号

您可能想使用
行编号()
为重复的案例生成唯一的编号

WITH CTE AS 
(
SELECT A.Name, 
       A.Device,
       CONVERT(DATETIME, A.ORDERDATE, 120) AS ORDER_DATE,  
       ORDER_TIME,
       A.ORDER_BDATE,
       A.ORDER_BTIME,
       Product,
       A.PR_ID
FROM MyTable A
WHERE 
      A.Product = 'GPS' AND
      A.[STATUS] ='ACTIVE'
  )

SELECT R.*
FROM (
SELECT A.*,
       DENSE_RANK() OVER (PARTITION BY A.Name ORDER BY A.ORDER_DATE DESC, A.ORDER_TIME DESC) AS ORDER_POSITION
FROM CTE A) R