Из того, что вы предоставили, похоже, что вы должны вернуть все RTN=1
строк, каждая с полным набором из 2 и 3 строк под ним, в порядке RN,RTN
.
Если это правильно, похоже, что один из способов добиться этого - UNION ALL, который дублирует 2 и 3 для каждого 1, а затем предоставляет искусственный столбец для упорядочения.
SELECT * , RTN AS Ord
FROM..WHERE..AND RTN=1
UNION ALL
SELECT t1.* , t2.RTN AS Ord
FROM myTable t1
CROSS JOIN myTable t2
WHERE..AND t1.RTN<>1 AND t2.RTN=1
ORDER BY Ord,RN,RTN
РЕДАКТИРОВАТЬ:
Хорошо, я вижу то, что я пропустил. Нам нужно фактически использовать RN
AS Ord
, а также нам нужно добавить еще один искусственный столбец, чтобы заставить записи POLR
попасть в начало их группировки. Вот так:
SELECT *, RN AS Ord, 1 AS Ord2
FROM myTable
WHERE..AND RTN=1
UNION ALL
SELECT t1.* , t2.RN AS Ord, 2 AS Ord2
FROM myTable t1
CROSS JOIN myTable t2
WHERE..AND t1.RTN<>1 AND t2.RTN=1
ORDER BY Ord,Ord2,RN,RTN
Я проверил это, и оно работает:
CREATE TABLE #tmp (
L1 char(1)
, I1 int
, I2 int
);
INSERT INTO #tmp
VALUES
('a',1,1)
, ('a',1,2)
, ('c',2,1)
, ('d',3,1)
, ('c',2,2)
, ('d',3,2)
;
SELECT *, I2 AS Ord, 1 AS Ord2
FROM #tmp
WHERE I1=1
UNION ALL
SELECT t1.*, t2.I2 AS Ord, 2 AS Ord2
FROM #tmp t1
CROSS JOIN #tmp t2
WHERE t1.I1<>1 AND t2.I1=1
ORDER BY Ord, Ord2, I2, I1
;
DROP TABLE #tmp;
«~ /» не является допустимым значением для ApplicationPath. Весь смысл синтаксиса «~ /» состоит в том, чтобы позволить вам указывать URL-адреса, относящиеся к ApplicationPath.
Для корневого сайта значение должно быть «/». Для сайтов в виртуальных каталогах это должно быть значение типа "/mysite".