2016-10-03 95 views
-2
05214M 2 BRAKE PAD METAL EACH 1992 POLARIS 400 XC/ XCR 
05214M 2 BRAKE PAD METAL EACH 1991 POLARIS 400 XC/ XCR 

你好給出的數據上面,我是試圖把具有相同部件號(05214M)和同一型號的所有行(POLARIS 400 XC/XCR)達到這一結果,並創建使用年份和型號的標題。我如何使用SQL SELECT語句

所以我想要的標題爲這一個是

BRAKE PAD METAL POLARIS 400 XC/ XCR 1991-1992 

這可能使用SQL?

+5

給我們表定義,也許我們可以提供幫助。 – Shadetheartist

+2

你正在使用哪些DBMS? –

+0

請提供您已經嘗試過的表格和代碼的模式。我們在這裏幫助解決問題,而不是完全爲您解決問題。 – Gasper

回答

2

使用最小值最大值和group by

select model, concat(min(`year`) , '-', max(`year`)) 
    from my_table 
    group by model 

如果你想有一個特定的模型,你可以使用where

select model, concat(min(`year`) , '-', max(`year`)) 
    from my_table 
    where model = '05214M' 
    group by model 

如果你想與單排和模型與模型不同的結果更多然後你可以使用這樣的聯合行

select model, concat(min(`year`) , '-', max(`year`)) 
    from my_table 
    group by model 
    having count(*)>1 
    union 
    select model, `year` 
    from my_table 
    group by model 
    having count(*) = 1 
+0

鑑於對1991年,1992年和1995年的評論......投票贊成。這似乎解決了所有的要求,並且實際上會起作用。其他版本不處理動態日期或使用SQL服務器上不可用的函數;或爲此表達。 (除了在更新之前缺少''''),用戶需要將模型+空格+標題或其他東西組合在一起並按組合字段組合。 – xQbert

+0

我已更新asnwer ..一些錯誤..更正 – scaisEdge

+0

@xObert正確我只使用..標準的SQL函數 – scaisEdge

-1

使用concat和組由

select concat(item,' ',model,' ',Min(year),'-',Max(year)) as title 
from Table_name 
group by sku; 
+1

認爲這會拋出一個錯誤項目和模型必須在組中。不要認爲express通過擴展支持mySQL的組。 – xQbert

1

如果由於某種原因,你不能使用GROUP BY你也可以做到這一點像這樣一個窗口函數:

SELECT model, 
     CAST(min(year) over (partition by model order by year) as varchar(4)) + '-' + 
     CAST(max(year) over (partition by model order by year) as varchar(4)) as Date_Range 
FROM atable