我从视图中得到以下输出:
xfer_id client_plt_id xfer_doc_no
2255 80016616 KANORANJE1
2270 80016616 ORANJECFC1
2285 80016616 CFCFPT1
2285 80016623 CFCFPT1
2270 80016623 ORANCFC1
2255 80016623 KANORANJE1
2255 80016630 KANORANJE1
2270 80016630 ORANCFC1
2285 80016630 CFCFPT1
如果有多个client_plt_id具有相同的编号,我想隔离具有最高xfer_id的行。
对于client_plt_id = 80016616,例如xfer_id = 2285。
关于我如何做到这一点的任何想法?
编辑:我正在使用MS-SQL 2008
答案 0 :(得分:2)
SELECT MAX(xfer_id), client_plt_id FROM table GROUP BY client_plt_id;
答案 1 :(得分:1)
这些查询都会为每个不同的xfer_id
client_plt_id
的行
select xfer_id, client_plt_id, xfer_doc_no
from tab t1
where xfer_id = (
select max(xfer_id)
from tab t2
where t2.client_plt_id = t1.client_plt_id
)
或者,对于mysql,这可能会更好:
select xfer_id, client_plt_id, xfer_doc_no
from tab t1
inner join (
select max(xfer_id), client_plt_id
from tab
group by client_plt_id
) t2
on t1.client_plt_id = t2.client_plt_id
and t1.xfer_id = t2.xfer_id
对于这两个查询,您只需添加WHERE
子句即可在特定客户端上进行选择。只需添加例如WHERE client_plt_id = 80016616
即可。
如果您只想要最高xfer_id
的一行,无论client_plt_id
如何,这都是您需要的:
select xfer_id, client_plt_id, xfer_doc_no
from tab t1
where xfer_id = (select max(xfer_id) from tab)
答案 2 :(得分:1)
您可以尝试这样的事情
DECLARE @TABLE TABLE(
xfer_id INT,
client_plt_id INT,
xfer_doc_no VARCHAR(100)
)
INSERT INTO @TABLE (xfer_id ,client_plt_id,xfer_doc_no) SELECT 2255,80016616,'KANORANJE1'
INSERT INTO @TABLE (xfer_id ,client_plt_id,xfer_doc_no) SELECT 2270,80016616,'ORANJECFC1'
INSERT INTO @TABLE (xfer_id ,client_plt_id,xfer_doc_no) SELECT 2285,80016616,'CFCFPT1'
INSERT INTO @TABLE (xfer_id ,client_plt_id,xfer_doc_no) SELECT 2285,80016623,'CFCFPT1'
INSERT INTO @TABLE (xfer_id ,client_plt_id,xfer_doc_no) SELECT 2270,80016623,'ORANCFC1'
INSERT INTO @TABLE (xfer_id ,client_plt_id,xfer_doc_no) SELECT 2255,80016623,'KANORANJE1'
INSERT INTO @TABLE (xfer_id ,client_plt_id,xfer_doc_no) SELECT 2255,80016630,'KANORANJE1'
INSERT INTO @TABLE (xfer_id ,client_plt_id,xfer_doc_no) SELECT 2270,80016630,'ORANCFC1'
INSERT INTO @TABLE (xfer_id ,client_plt_id,xfer_doc_no) SELECT 2285,80016630,'CFCFPT1'
SELECT t.*
FROM @TABLE t INNER JOIN
(
SELECT client_plt_id,
MAX(xfer_id) Max_xfer_id
FROM @TABLE
GROUP BY client_plt_id
) maxVals ON t.client_plt_id = maxVals.client_plt_id
AND t.xfer_id = maxVals.Max_xfer_id
答案 3 :(得分:0)
您正在寻找Group By clause。
我举一个例子,但你没有指定你正在使用的数据库。