Sql server 2008 返回重复值的分区上的行数()
以下查询将在第一个分区集之后生成重复的行号。例如,第一组fldPK=2403和fldCIA=1我收到以下信息Sql server 2008 返回重复值的分区上的行数(),sql-server-2008,row-number,Sql Server 2008,Row Number,以下查询将在第一个分区集之后生成重复的行号。例如,第一组fldPK=2403和fldCIA=1我收到以下信息 2403 1 1 2403 1 2 2403 1 3 2403 1 4 在第二盘我收到 2403 2 1 2403 2 1 <-- duplicate 1 within the same partition 2403 2 2 2403 2 3 SELECT *, 1 AS f
2403 1 1
2403 1 2
2403 1 3
2403 1 4
在第二盘我收到
2403 2 1
2403 2 1 <-- duplicate 1 within the same partition
2403 2 2
2403 2 3
SELECT *, 1 AS fldBF,
ROW_NUMBER() OVER (PARTITION BY fldPK, fldCIA ORDER BY fldPK) AS sCount
INTO #tmpTable
FROM V_qryCSPGA
WHERE fldPK IN(SELECT DISTINCT thePK FROM FN_qryAllDTPK())
UNION ALL
SELECT *, 1 AS fldBF,
ROW_NUMBER() OVER (PARTITION BY fldPK, fldCIA ORDER BY fldPK) AS sCount
FROM FN_qryCSGBA()
WHERE fldPK IN(SELECT DISTINCT thePK FROM FN_qryAllDTPK())
ORDER BY fldPK, fldCIA, fldNDat;
这将停止重复的数字。新编号是否是您真正想要的,是另一回事:
; WITH cte AS
( SELECT *, 1 AS fldBF
FROM V_qryCSPGA
WHERE fldPK IN(SELECT DISTINCT thePK FROM FN_qryAllDTPK())
UNION ALL
SELECT *, 1 AS fldBF
FROM FN_qryCSGBA()
WHERE fldPK IN(SELECT DISTINCT thePK FROM FN_qryAllDTPK())
)
SELECT *,
ROW_NUMBER() OVER (PARTITION BY fldPK, fldCIA ORDER BY fldPK) AS sCount
INTO #tmpTable
FROM cte
ORDER BY fldPK, fldCIA, fldNDat;
这将停止重复的数字。新编号是否是您真正想要的,是另一回事:
; WITH cte AS
( SELECT *, 1 AS fldBF
FROM V_qryCSPGA
WHERE fldPK IN(SELECT DISTINCT thePK FROM FN_qryAllDTPK())
UNION ALL
SELECT *, 1 AS fldBF
FROM FN_qryCSGBA()
WHERE fldPK IN(SELECT DISTINCT thePK FROM FN_qryAllDTPK())
)
SELECT *,
ROW_NUMBER() OVER (PARTITION BY fldPK, fldCIA ORDER BY fldPK) AS sCount
INTO #tmpTable
FROM cte
ORDER BY fldPK, fldCIA, fldNDat;
这将停止重复的数字。新编号是否是您真正想要的,是另一回事:
; WITH cte AS
( SELECT *, 1 AS fldBF
FROM V_qryCSPGA
WHERE fldPK IN(SELECT DISTINCT thePK FROM FN_qryAllDTPK())
UNION ALL
SELECT *, 1 AS fldBF
FROM FN_qryCSGBA()
WHERE fldPK IN(SELECT DISTINCT thePK FROM FN_qryAllDTPK())
)
SELECT *,
ROW_NUMBER() OVER (PARTITION BY fldPK, fldCIA ORDER BY fldPK) AS sCount
INTO #tmpTable
FROM cte
ORDER BY fldPK, fldCIA, fldNDat;
这将停止重复的数字。新编号是否是您真正想要的,是另一回事:
; WITH cte AS
( SELECT *, 1 AS fldBF
FROM V_qryCSPGA
WHERE fldPK IN(SELECT DISTINCT thePK FROM FN_qryAllDTPK())
UNION ALL
SELECT *, 1 AS fldBF
FROM FN_qryCSGBA()
WHERE fldPK IN(SELECT DISTINCT thePK FROM FN_qryAllDTPK())
)
SELECT *,
ROW_NUMBER() OVER (PARTITION BY fldPK, fldCIA ORDER BY fldPK) AS sCount
INTO #tmpTable
FROM cte
ORDER BY fldPK, fldCIA, fldNDat;
你有一个
联盟
,这就是原因。两个独立的计数。有点像,如果我最初创建一个空的Scont列,是否有必要进行更新?我试过了,但所有的Scont值都是1。您可以在派生表中进行并集,然后在外部查询中进行行编号()。这将为现在得到重复的行提供不同的数字(如果您需要的话)。联合的第一部分的行需要得到低数字,而第二部分的行需要得到高数字吗?不,基本上,我只是将表与union连接起来,然后从那里进行分区,并为每个fldPK和fldCIA对插入多个点的行号。您有一个union
,这就是原因。两个独立的计数。有点像,如果我最初创建一个空的Scont列,是否有必要进行更新?我试过了,但所有的Scont值都是1。您可以在派生表中进行并集,然后在外部查询中进行行编号()。这将为现在得到重复的行提供不同的数字(如果您需要的话)。联合的第一部分的行需要得到低数字,而第二部分的行需要得到高数字吗?不,基本上,我只是将表与union连接起来,然后从那里进行分区,并为每个fldPK和fldCIA对插入多个点的行号。您有一个union
,这就是原因。两个独立的计数。有点像,如果我最初创建一个空的Scont列,是否有必要进行更新?我试过了,但所有的Scont值都是1。您可以在派生表中进行并集,然后在外部查询中进行行编号()。这将为现在得到重复的行提供不同的数字(如果您需要的话)。联合的第一部分的行需要得到低数字,而第二部分的行需要得到高数字吗?不,基本上,我只是将表与union连接起来,然后从那里进行分区,并为每个fldPK和fldCIA对插入多个点的行号。您有一个union
,这就是原因。两个独立的计数。有点像,如果我最初创建一个空的Scont列,是否有必要进行更新?我试过了,但所有的Scont值都是1。您可以在派生表中进行并集,然后在外部查询中进行行编号()。这将为现在得到重复的行提供不同的数字(如果您需要的话)。联合的第一部分的行需要得到低数字,而第二部分的行需要得到高数字吗?不,我基本上只是将表与union连接起来,然后从那里进行分区,并为每个fldPK和fldCIA对插入多个点的行号。