Добавлено: Работа с 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 - моя большая проблема, так как каждое значение уникально, но мне нужно только одно.
ПРИМЕЧАНИЕ: значение_rk не является числом, поэтому это НЕ РАБОТАЕТ
UPDATE: У меня рабочая версия, она, вероятно, довольно медленная, чем чистая SQL-версия, но, честно говоря, все, что работает на этом этапе, лучше, чем ничего. Он принимает результаты первого запроса, выполняет второй запрос, за исключением того, что он приводит к одному, и захватывает соответствующее значение_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 по-прежнему очень приветствуются:)