同一个伙伴的两个记录在一起 [英] Two records of same Partner together

查看:70
本文介绍了同一个伙伴的两个记录在一起的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,


这是表和DML的声明

CREATE TABLE [jatpartnerMst](

[rowid] [int],

[partnerid] [int] NULL,

[mcstat] [int] DEFAULT(1), - 1待定,2批准

[sf] [varchar](20)




INSERT INTO [jatpartnerMst]

([rowid] ],[partnerid],[mcstat],[sf])VALUES(1,1,2,''active'')

INSERT INTO [jatpartnerMst]

( [rowid],[partnerid],[mcstat],[sf])VALUES(2,1,2,''active'')

INSERT INTO [jatpartnerMst]

([rowid],[partnerid],[mcstat],[sf])VALUES(3,1,2,''active'')

INSERT INTO [jatpartnerMst]

([rowid],[partnerid],[mcstat],[sf])VALUES(4,1,2,''active'')

INSERT INTO [jatpartnerMst]

([rowid],[partnerid],[mcstat],[sf])VALUES(5,1,1,''active'')

INSERT INTO [jatpartnerMst]

([rowid],[partnerid],[mcstat],[sf])VALUES(6,1,2,''inactive'')

INSERT INTO [jatpartnerMst]

([rowid],[partnerid],[mcstat],[sf])VALUES(7,1,2,''inactive'')

INSERT INTO [jatpartnerMst]

([rowid],[partnerid],[mcstat],[sf])VALUES(8,1,2,''inactive'' )

INSERT INTO [jatpartnerMst]

([rowid],[partnerid],[mcstat],[sf])VALUES(9,2,2,''有效'')

INSERT INTO [jatpartnerMst]

([rowid],[partnerid],[mcstat],[sf])VALUES(10,2,1,' '活跃'')

INSERT INTO [jatpartnerMst]

([rowid],[partnerid],[mcstat],[sf])VALUES(11,1,2 ,''活跃'')


我希望找到的是最新的记录,它是其他

记录

例如如果partnerID 1被更改,则会转到表格的底部,

任何给定时间我只对max(rowid)感兴趣的合作伙伴

stat 1或2


我正在使用此查询

select * from jatpartnerMst where rowid in(select max(rowid)f rom

jatpartnermst其中mcstat in(1,2)group by partnerid,mcstat)

这个查询不给我最新的。


使用此查询

从jatpartnerMst中选择*其中rowid in(选择max(rowid)来自

jatpartnermst其中mcstat in(1,2)group by partnerid, mcstat)

由rowid desc订购


合作伙伴的两条记录分开。我想告诉他们

彼此。

所以输出应该是


11 1 2活跃

5 1 1活跃

9 2 2活跃

10 2 1活跃


11& 5个rowid是相互跟随的,因为它们是相同的

合作伙伴的行,11是最近的行[因为新的行插入了

结尾]


是否可以使用单个查询执行上述操作

我正在使用光标执行相同操作。


热烈问候

Jatinder

Hi all,

Here is the table and DML statments
CREATE TABLE [jatpartnerMst] (
[rowid] [int] ,
[partnerid] [int] NULL ,
[mcstat] [int] DEFAULT (1), -- 1 Pending ,2 Approved
[sf] [varchar] (20)
)

INSERT INTO [jatpartnerMst]
([rowid],[partnerid],[mcstat],[sf])VALUES(1,1,2,''active'')
INSERT INTO [jatpartnerMst]
([rowid],[partnerid],[mcstat],[sf])VALUES(2,1,2,''active'')
INSERT INTO [jatpartnerMst]
([rowid],[partnerid],[mcstat],[sf])VALUES(3,1,2,''active'')
INSERT INTO [jatpartnerMst]
([rowid],[partnerid],[mcstat],[sf])VALUES(4,1,2,''active'')
INSERT INTO [jatpartnerMst]
([rowid],[partnerid],[mcstat],[sf])VALUES(5,1,1,''active'')
INSERT INTO [jatpartnerMst]
([rowid],[partnerid],[mcstat],[sf])VALUES(6,1,2,''inactive'')
INSERT INTO [jatpartnerMst]
([rowid],[partnerid],[mcstat],[sf])VALUES(7,1,2,''inactive'')
INSERT INTO [jatpartnerMst]
([rowid],[partnerid],[mcstat],[sf])VALUES(8,1,2,''inactive'')
INSERT INTO [jatpartnerMst]
([rowid],[partnerid],[mcstat],[sf])VALUES(9,2,2,''active'')
INSERT INTO [jatpartnerMst]
([rowid],[partnerid],[mcstat],[sf])VALUES(10,2,1,''active'')
INSERT INTO [jatpartnerMst]
([rowid],[partnerid],[mcstat],[sf])VALUES(11,1,2,''active'')

What I wish to find is the latest record on the top and it''s other
records
e.g If partnerID 1 is changed it goes to the bottom of the table , at
any given time I am interested only in max(rowid) for a partner with
stat 1 or 2

I am using this query
select * from jatpartnerMst where rowid in (select max(rowid) from
jatpartnermst where mcstat in (1,2) group by partnerid,mcstat )
This query does not give me the latest.

On using this query
select * from jatpartnerMst where rowid in (select max(rowid) from
jatpartnermst where mcstat in (1,2) group by partnerid,mcstat )
order by rowid desc

The partner''s two records get seperated . I wish to show them following
one another.
So the output should be

11 1 2 active
5 1 1 active
9 2 2 active
10 2 1 active

11 & 5 rowids are following each other because they are rows of same
partner and 11 is the most recent row [ because new rows are inserted
at the end]

Is it possible to do the above using single query
I am using cursor to do the same.

With Warm regards
Jatinder

推荐答案

您好

为此您可能需要看到

"扩展层次结构"在BOL


这里是一个例子


CREATE PROCEDURE扩展(@current char(20))as

SET NOCOUNT ON

DECLARE @level int,@ line char(20)

CREATE TABLE #stack(item char(20),level int)

INSERT INTO #stack VALUES(@current,1)

SELECT @level = 1


WHILE @level> 0

BEGIN

IF EXISTS(SELECT * FROM #stack WHERE level = @level)

BEGIN

SELECT @current = item

FROM #stack

WHERE level = @level

SELECT @line = space(@level - 1)+ @current

打印@line

从#stack删除

WHERE level = @level

AND item = @current

INSERT #stack

SELECT child,@ level + 1

FROM hierarchy

WHERE parent = @current

IF @@ ROWCOUNT> 0

SELECT @level = @level + 1

END

ELSE

SELECT @level = @level - 1

结束 - 什么


请告诉我它是否解决了这个问题..

最好的问候,
Chandra
http://groups.msn.com/SQLResource /
http://chanduas.blogspot.com/

---------------------------------------


***通过开发人员指南 http://www.developersdex.com发送 ***
Hi
For this you might require to see
"Expanding Hierarchies" in BOL

here is the example

CREATE PROCEDURE expand (@current char(20)) as
SET NOCOUNT ON
DECLARE @level int, @line char(20)
CREATE TABLE #stack (item char(20), level int)
INSERT INTO #stack VALUES (@current, 1)
SELECT @level = 1

WHILE @level > 0
BEGIN
IF EXISTS (SELECT * FROM #stack WHERE level = @level)
BEGIN
SELECT @current = item
FROM #stack
WHERE level = @level
SELECT @line = space(@level - 1) + @current
PRINT @line
DELETE FROM #stack
WHERE level = @level
AND item = @current
INSERT #stack
SELECT child, @level + 1
FROM hierarchy
WHERE parent = @current
IF @@ROWCOUNT > 0
SELECT @level = @level + 1
END
ELSE
SELECT @level = @level - 1
END -- WHILE

Please let me know if it solves the purpose..
best Regards,
Chandra
http://groups.msn.com/SQLResource/
http://chanduas.blogspot.com/
---------------------------------------

*** Sent via Developersdex http://www.developersdex.com ***


您好钱德拉,

感谢您的回复和时间。但我正在寻找一套基于套装

解决方案


热烈的问候

Jatinder

Hi Chandra,
Thanks for your reply and time . But I am looking for a "Set Based
Solution"

With warm regards
Jatinder


jsfromynr(ja************@clovertechnologies.com)写道:
jsfromynr (ja************@clovertechnologies.com) writes:
我希望找到的是顶部的最新记录和它的其他
记录
例如,如果partnerID 1被更改,它会转到表格底部,
任何给定时间我只对max感兴趣( rowid)对于
stat 1或2的合作伙伴
What I wish to find is the latest record on the top and it''s other
records
e.g If partnerID 1 is changed it goes to the bottom of the table , at
any given time I am interested only in max(rowid) for a partner with
stat 1 or 2




最新?我没有看到任何日期时间列,那么你的定义是什么?

最新?

-

Erland Sommarskog,SQL Server MVP , es****@sommarskog.se


SQL Server SP3联机丛书在
http://www.microsoft .com / sql / techinf ... 2000 / books.asp


这篇关于同一个伙伴的两个记录在一起的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆