Моя цель - создать временную таблицу, где TBL_1.RANDOM1 не существует в TBL_2.RANDOM2. Он работает, если RANDOM2 не имеет данных, но после ввода значения мой код заполняет NULLS.Как создать случайное число, которое не существует в другой таблице?
Я искал какое-то время и нашел один фрагмент кода и думал, что он работает до тех пор, пока некоторые данные не будут добавлены в столбец, который я не хотел дублировать.
SELECT DISTINCT COL1, MAX(COL2) AS COL2, MAX(COL3) AS COL3, (
SELECT DISTINCT 'AUTOCT'
+ CAST(ABS(CHECKSUM(NEWID()) % 899999) + 100000 AS VARCHAR(15)) AS RANDOM1
WHERE RANDOM1 NOT IN (
SELECT DISTINCT RANDOM2
FROM TBL_2
WHERE RANDOM2 LIKE 'AUTOCT%'
)
) AS RANDOM1, COUNT(COL5) AS COL5, SUM(COL6) AS COL6
INTO ##TEMP1
FROM TBL_1
Вы имеете в виду ['RAND()'] (https://msdn.microsoft.com/en-us/library/ms177610 (v = sql.120) .aspx)? – Marusyk
Я не вижу, как код, который вы вставили выше, будет запущен вообще. 'COL1' находится в списке выбора, но не в' GROUP BY'. «RANDOM1» в предложении where подзапроса относится к 'TBL_1.RANDOM1', который не имеет смысла, потому что вы хотите проверить, существуют ли уже существующие значения или нет, исправить? И снова, 'TBL_1.RANDOM1' не находится в' GROUP BY'. Это для Microsoft SQL Server? Кстати, глобальные таблицы temp практически всегда являются неправильным выбором. –
[Возможный дубликат] (http://stackoverflow.com/questions/28500029/generate-a-random-number-which-is-not-there-in-a-table-in-sql-server) – Wanderer