得到

2012-01-09 24 views
0

我有查詢相同的名稱,索引量,但不同的代碼只有一行:得到

select distinct index, name, code, amount as amount_min 
from sales s 
where (amount = 
(
    select mindex(s1.amount) 
    from sales s1 
    where s1.name = s.name 
)) 
order by s.name 

查詢工作得非常好,但我想對它們進行修改,這樣,當列索引,代碼量在幾行中是相同的,只有一個顯示,第一行。其餘的(儘管不同的代碼列)應該被忽略。有人能幫我嗎?

+0

如果你需要一致性,你需要定義你的「第一次」行的意思。否則,您可以從當前查詢的結果中進行查詢,並添加一個「行號」(Oracle將是ROWNUM)列,並讓您​​的包裝選擇具有MIN行號的行。 – Glenn 2012-01-09 14:42:03

+0

請發佈您目前正在獲取的內容以及您想獲得的內容的簡短示例。如果你也可以包含相關的表格結構,這是有幫助的。 – cdeszaq 2012-01-09 14:45:09

回答

1

因爲我不知道這是否是甲骨文,SQL服務器,Sybase ASE的,等等,你的方式來做到這一點是這樣的:

步驟1:與插入數據到臨時表標識列

select distinct counter = identity(10), index, name, code, amount as amount_min 
into #t1 
from sales s 
where (amount = 
(
    select mindex(s1.amount) 
    from sales s1 
    where s1.name = s.name 
)) 
order by s.name 

步驟2:進行必要的選擇

select index, name, code, amount_min from #t1 
where counter in (select min(counter) from #t1 group by index, name, amount_min) 

第3步:刪除臨時表

drop table #t1