2017-02-14 52 views
-1

我的問題是,要以這樣的方式排序這些結果,因爲它的順序是灰色的。排序來自SQL Server的數據的問題

也就是說獲得第EjeY列的每一個第一個差值。

enter image description here

+0

如何訂購EjeY字段?我認爲這不是一種排序模式。你的結果如何被複制? – PrestonM

+0

我相信這是一個孤島和差距問題。如果我理解你的意思,你需要一個查詢來指出特定字段發生特定更改的時間,並且只採取那些你想要進一步分類的不同更改。 –

+0

你想按「Valor」排序,但是* group wise *? – Shnugo

回答

0

可能是你正在尋找這樣的:

DECLARE @Dummy TABLE(ID INT IDENTITY, EjeY VARCHAR(100),Valor INT); 
INSERT INTO @Dummy VALUES 
('Alta/Deviciente',14) 
,('Baja/Baja',16) 
,('Baja/Media',14) 
,('Alta/Alta',8) 
,('Alta/Baja',12) 
,('Baja/Deviciente',18) 
,('Baja/Alta',12) 
,('Alta/Optima',6) 
,('Alta/Media',10) 
,('Baja/Optima',10); 

SELECT * 
FROM @Dummy AS d 
ORDER BY LEFT(EjeY,CHARINDEX('/',EjeY)-1),Valor DESC 

結果

ID EjeY   Valor 
1 Alta/Deviciente 14 
5 Alta/Baja  12 
9 Alta/Media  10 
4 Alta/Alta  8 
8 Alta/Optima  6 
6 Baja/Deviciente 18 
2 Baja/Baja  16 
3 Baja/Media  14 
7 Baja/Alta  12 
10 Baja/Optima  10 
+0

現場EJEY的順序是 1. ALTA/DEFICIENTE 2. BAJA/OPTIMA 3。DEFICIENTE/DEFICIENTE 4. MEDIA/ALTA 5. OPTIMA/DEFICIENTE –

+2

@DiegoLoaiza:你的*** CAPS LOCK ***鍵是*** STUCK *** ...... –

+0

什麼? (你的CAPS LOCK鍵是STUCK) –

0

如果你只是想記錄你的Ejey分隔場的左邊部分的變化那麼你需要拆分字段,然後按ID排序值。

排序後,您可以選擇您感興趣的記錄PARTITION的第一行。

DECLARE @Dummy TABLE(ID INT, EjeY VARCHAR(100),Valor INT); 
INSERT INTO @Dummy VALUES 
(1,'Alta/Deviciente',14) 
,(2,'Alta/Baja',12) 
,(6,'Baja/Optima',10) 
,(7,'Baja/Alta',12) 
,(11,'Deficiente/Deficiente',20) 
,(11,'Deficiente/Baja',18) 
,(16,'Media/Alta',10) 
,(17,'Media/Optima',8) 

- 此查詢將根據您的Ejey字段值的LEFT()分區在您的數據中繪製一個排名。

SELECT 
    *, 
    RowNumber=ROW_NUMBER() OVER(PARTITION BY SortPart ORDER BY ID DESC) 
FROM 
(
    SELECT 
     ID, 
     SortPart=LEFT(EjeY,CHARINDEX('/',EjeY)-1), 
     Valor 
    FROM 
     @Dummy 
)AS X 

--This查詢將你的理想的數據

SELECT 
    * 
FROM 
(
    SELECT 
     *, 
     RowNumber=ROW_NUMBER() OVER(PARTITION BY SortPart ORDER BY ID ASC) 
    FROM 
    (
     SELECT 
      ID, 
      SortPart=LEFT(EjeY,CHARINDEX('/',EjeY)-1), 
      Valor 
     FROM 
      @Dummy 
    )AS X 
)AS Y 
WHERE 
    RowNumber=1 

的集中進一步命令只記錄--results一個

ID SortPart Valor RowNumber 
2 Alta   12 1 
1 Alta   14 2 
7 Baja   12 1 
6 Baja   10 2 
11 Deficiente  20 1 
11 Deficiente  18 2 
17 Media   8 1 
16 Media   10 2 

--results乙

ID SortPart Valor RowNumber 
1 Alta   14 1 
6 Baja   10 1 
11 Deficiente  20 1 
+0

現場EJEY的順序是:1.ALTA/DEFICIENTE 2. BAJA/OPTIMA 3. DEFICIENTE/DEFICIENTE 4. MEDIA/ALTA 5. OPTIMA/DEFICIENTE 我的表格有625條記錄... –