27,579
社区成员
发帖
与我相关
我的任务
分享
SELECT * FROM Information a INNER JOIN
(SELECT MIN(NFare) NFare,Arrivecode FROM Information GROUP BY Arrivecode) b
ON a.NFare=b.NFare AND a.Arrivecode=b.Arrivecode
IF OBJECT_ID(N'Information',N'U') IS NOT NULL
DROP TABLE Information
GO
CREATE TABLE Information(ID INT PRIMARY KEY,NFare FLOAT,FromCode VARCHAR(10),Arrivecode VARCHAR(10))
INSERT INTO Information
SELECT '171056','240.00','NAY','BAV'
UNION ALL SELECT '176373','680.00','NAY','CAN'
UNION ALL SELECT '171219','380.00','PEK','CGQ'
UNION ALL SELECT '169603','180.00','NAY','CIF'
UNION ALL SELECT '170115','270.00','PEK','CIH'
UNION ALL SELECT '167895','300.00','NAY','CIH'
UNION ALL SELECT '168235','500.00','PEK','CKG'
----------------------------------查询-----------------------------------------------------------------------
SELECT MIN(ID) ID,MIN(NFare) NFare,MIN(FromCode) FromCode ,Arrivecode FROM Information GROUP BY Arrivecode
---------------------------------结果----------------------------------------------------------------------
/*
(7 行受影响)
ID NFare FromCode Arrivecode
----------- ---------------------- ---------- ----------
171056 240 NAY BAV
176373 680 NAY CAN
171219 380 PEK CGQ
169603 180 NAY CIF
167895 270 NAY CIH
168235 500 PEK CKG
(6 行受影响)
*/
select * from tb t where NFare=(select min(NFare) from tb where arriveCode=t.arriveCode)
select id from YourTable group by ArriveCode order by NFare
不是很理解你的意思,这条语句是实现找出每一个ArriveCode对应的最小NFare值得ID,希望能帮到你SELECT id,nfare,fromcode,arriveCode
FROM (
SELECT *,ROW_NUMBER()OVER(PARTITION BY arriveCode ORDER BY GETDATE())oid
FROM TB )a
WHERE oid=2
例子比较特殊,不知道你的重复值有多少个,我这里做了两个假设:
1、重复值最多2个。
2、你的数据没有任何排序,如果有,上面代码中的order by的列就按照你的排序字段来写select * from TB A where not exists(select 1 from TB B where A.ArriveCode = B.ArriveCode and A.Fromcode <B.fromcode)