Моя проблема заключается в том, чтобы упорядочить эти результаты таким образом, чтобы порядок был таким, как он обозначен серым.Проблемы с сортировкой данных из SQL Server
То есть, чтобы получить каждую первую разницу в колонке EjeY
.
Моя проблема заключается в том, чтобы упорядочить эти результаты таким образом, чтобы порядок был таким, как он обозначен серым.Проблемы с сортировкой данных из SQL Server
То есть, чтобы получить каждую первую разницу в колонке EjeY
.
Может быть вы ищете это:
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
ПОРЯДОК ПОЛЯ EJEY 1. ALTA/DEFICIENTE 2. BAJA/OPTIMA 3.DEFICIENTE/DEFICIENTE 4. MEDIA/ALTA 5. OPTIMA/DEFICIENTE –
@DiegoLoaiza: ваш *** CAPS LOCK *** ключ *** STUCK *** ...... –
что? (ваша кнопка CAPS LOCK - STUCK) –
Если вы хотите, чтобы записать изменения в левой части вашего Ejey разделителями поля то вам нужно разделить поле, а затем упорядочить ранжирование значений по идентификатору.
После того, как у вас есть рейтинг, вы можете выбрать записи, которые вы заинтересованы в принятии первой строки 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)
--This запрос нарисует ранг в вашем данных на основе ВЛЕВО() раздел вашего значения поля Ejey.
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 A
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
ПОРЯДОК ПОЛЯ EJEY IS 1. ALTA/DEFICIENTE 2. BAJA/OPTIMA 3. ДЕФИЦИЕНТ/ДЕФИЦИЕНТ 4. MEDIA/ALTA 5. ОПТИМА/ДЕФИЦИЕНТ В моем столе 625 записей ... –
Как поле EjeY заказывается? Мне не кажется, что это сортировка. Как можно реплицировать результаты? – PrestonM
Я считаю, что это проблема острова и щели. Если я понимаю, что вы имеете в виду, вам нужен запрос, который будет указывать, когда происходит определенное изменение для определенного поля, и принимая только те отдельные изменения, которые вы хотите продолжить сортировать. –
Вы хотите отсортировать по: 'Valor' но * group wise *? – Shnugo