Добавлено: Работа с SQL Server 2000 и 2005, поэтому должна работать на обоих. Кроме того, value_rk не является числом / целым числом (ошибка: операнд типа данных уникальный идентификатор недопустим для оператора min)
Есть ли способ сделать совпадение для одного столбца "DISTINCT", если мне не нужны другие возвращенные столбцы? Пример:
**Table**
Value A, Value L, Value P
Value A, Value Q, Value Z
Мне нужно вернуть только одну из этих строк в зависимости от того, что находится в первой (значение A). Мне все еще нужны результаты из второго и третьего столбцов (второй в любом случае должен совпадать по всем направлениям, но третий - это уникальный ключ, который мне нужен как минимум один из них).
Вот то, что я получил до сих пор, хотя это, очевидно, не работает:
SELECT value, attribute_definition_id, value_rk
FROM attribute_values
WHERE value IN (
SELECT value, max(value_rk)
FROM attribute_values
)
ORDER BY attribute_definition_id
Я работаю в ColdFusion, поэтому, если есть простой обходной путь, я тоже открыт для этого. Я пытаюсь ограничить или "сгруппировать" по первому столбцу "значение". value_rk - моя большая проблема, поскольку каждое значение уникально, но мне нужно только одно.
ПРИМЕЧАНИЕ: value_rk не является числом, следовательно, это НЕ РАБОТАЕТ
ОБНОВЛЕНИЕ: у меня есть рабочая версия, она, вероятно, немного медленнее, чем чистая версия SQL, но, честно говоря, все, что работает на этом этапе, лучше, чем ничего. Он берет результаты первого запроса, выполняет второй запрос, за исключением ограничения его результатов одним, и получает совпадающее значение value_rk для соответствующего значения. Вот так:
<cfquery name="queryBaseValues" datasource="XXX" timeout="999">
SELECT DISTINCT value, attribute_definition_id
FROM attribute_values
ORDER BY attribute_definition_id
</cfquery>
<cfoutput query="queryBaseValues">
<cfquery name="queryRKValue" datasource="XXX">
SELECT TOP 1 value_rk
FROM attribute_values
WHERE value = '#queryBaseValues.value#'
</cfquery>
<cfset resourceKey = queryRKValue.value_rk>
...
Итак, у вас есть это, четко выделяя один столбец в ColdFusion. Любые предложения по SQL Server 2000/2005 по-прежнему приветствуются:)