У меня есть проблема с декартовым продуктом, используя SQL SERVER 2012.Декартовы продукты с использованием сервера sql
Вот мой пример запроса:
SELECT A1.*
,RIGHT('00000' + A1.SampleID,5) AS [RealSampleID]
FROM
(
SELECT
ARS1.SampleID
,ARS1.SampleNo
FROM TblSamples AS ARS1
GROUP BY
ARS1.SampleNo
,ARS1.SampleID
) AS [A1]
INNER JOIN
(
SELECT
ARS2.SampleID
,ARS2.SampleNo
FROM TblSamples AS ARS2
WHERE ISNUMERIC(ARS2.SampleID) = 0
GROUP BY
ARS2.SampleNo
,ARS2.SampleID
) AS A2
ON A1.SampleNo=A2.SampleNo
Результат моего запроса
Ожидаемый результат:
Cartesian product Formula: нечисловой SampleID Х Числовое SampleID за SampleNo
Пример:
Все SampleNo . У нас есть два числовых значения (277 и 278) в столбце SampleID и одно отличное Non-Numeric значение (R00137). Тогда RealSampleID этого нечислового значения (R00137) будет 00277 и 00278. Как и то, что мы видели в приведенном выше изображении.
Можете ли вы предоставить образец данных для двух таблиц? –
Попробуйте 'ISNUMERIC (ARS2.SampleID) = 1', а также' RIGHT ('00000' + A2.SampleID, 5) AS [RealSampleID] '- вы хотите, чтобы таблица A2 удерживала« правильные »идентификаторы образца – BeanFrog
' SELECT A1. * , RIGHT ('00000' + A1.SampleID, 5) AS [RealSampleID] '- все поля имеют префикс A1, no A2; нижняя строка в ожидаемом вами результате невозможна. –