2017-02-14 4 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

フィールド令の注文は です。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 

- このクエリでは、データのあなたの理想的なセット内のレコードだけ

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 

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 B

ID SortPart Valor RowNumber 
1 Alta   14 1 
6 Baja   10 1 
11 Deficiente  20 1 
を--results順序を促進します
+0

フィールド服の注文は です。1. ALTA/DEFICIENTE 2. BAJA/OPTIMA 3.不特定多数/不特定多数 4. MEDIA/ALTA 5. OPTIMA/DEFICIENTE 私のテーブルには625のレコードがあります。 –

関連する問題