2016-03-07 5 views
0

Здесь у меня есть два столбца, как показано ниже в примере column1 & column2 в таблице sql, и я хочу получить уникальную строку значений на основе column2 Значение столбца из таблицы
Ниже пример таблицы фиктивнойКак получить уникальное значение из таблицы sql на основе charachter length of value

Column1    Column2 

----------   ------------- 

1001     ab 
1001     abc 
1001     abcd 
2001     wxyz 
2001     wxy 
2001     wx 

в приведенном выше примере значение, начиная с & другое значение, начиная с ш в Столбец2
На основе длины символьного же значение, я хочу, чтобы получить результат, как показано ниже
Выход:

Column1    Column2 

----------   ----------- 

1001      abcd 
2001      wxyz 

Заранее спасибо помощь :)

+6

Опишите, как выбрать значение столбца2 для уникального значения столбца1. – jarlh

+0

выше результата на основе значения столбца2 (длина шаблона) в столбцах одной таблицы –

+0

Что делать, если две строки имеют разные значения, но та же самая (максимальная) длина? – jarlh

ответ

1

Если вы хотите, если ваши ценности в COLUMN2 где-то включены в другие строки, другими словами: Если вы ищете строки с комбинациями символов, которые являются уникальными сами по себе, это может быть ваше решение:

CREATE TABLE TestTable(Column1 INT,Column2 VARCHAR(100)); 
INSERT INTO TestTable VALUES 
(1001,'ab') 
,(1001,'abc') 
,(1001,'abcd') 
,(2001,'wxyz') 
,(2001,'xyz') 
,(2001,'yz'); 

SELECT * 
FROM TestTable 
WHERE NOT EXISTS(SELECT 1 
       FROM TestTable AS x 
       WHERE x.Column1=TestTable.Column1 
        AND LEN(x.Column2)>LEN(TestTable.Column2) 
        AND x.Column2 LIKE '%' + TestTable.Column2 + '%' 
       ) 

DROP TABLE TestTable; 
+0

- И x.Column2 LIKE '%' + TestTable.Column2 + '%' Комментировать эту строку & спасибо за вышеуказанный запрос. –

+1

@ Pankaj, рад, что это может вам помочь ... Пожалуйста, в следующий раз, когда вы что-то спросите - имейте в виду, что ** другие пользователи не знают, что вам ясно **. Просьба предоставить образцы данных, ожидаемый результат, четкое описание, правильные теги (СУБД!) И то, что вы пробовали, и какие ошибки/неправильные результаты у вас есть. Счастливое кодирование! – Shnugo

2

Если я вас правильно понял, вы хотите наивысшая длина (вы не сказали, что делать, когда есть две одинаковой длины), но в основном вы хотите что-то вроде этого:

SELECT * FROM YourTable 
WHERE (column1,len(column2)) IN(select Column1,max(len(column2)) 
           FROM YourTable 
           GROUP BY Column1) 
+0

Но это будет просто искать наибольшую длину, не глядя на содержимое текста. Теперь это вы, вероятно, наверняка, вероятно, и jarlh задали правильный вопрос в своем комментарии :-) – Shnugo

+0

Да, но я проверил содержимое данных, abcd больше ab, а wxyz меньше xyz, yz, поэтому единственное вещь, которую я мог бы понять, состоит в том, чтобы выбрать ту, которая имеет максимальную длину :) @Shnugo – sagi

+0

Msg 102, Level 15, State 1, Line 2 Неверный синтаксис рядом с ','. Msg 156, Level 15, State 1, Line 3 Неверный синтаксис рядом с ключевым словом 'FROM'. –

 Смежные вопросы

  • Нет связанных вопросов^_^