'Виртуальный тракт родственника приложения '~ /' не позволяется здесь' в модульном тесте на 2K3 сервер сборки, но не XP/Vista dev машины

Из того, что вы предоставили, похоже, что вы должны вернуть все 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;
8
задан alexis.kennedy 13 April 2009 в 19:58
поделиться

1 ответ

«~ /» не является допустимым значением для ApplicationPath. Весь смысл синтаксиса «~ /» состоит в том, чтобы позволить вам указывать URL-адреса, относящиеся к ApplicationPath.

Для корневого сайта значение должно быть «/». Для сайтов в виртуальных каталогах это должно быть значение типа "/mysite".

10
ответ дан 5 December 2019 в 12:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: