2013-06-23 3 views
-2

добрый день все. Я долго искал деятельность, которую наш профессор хочет от нас сделать.отображение строки с первым и последним нечетным номером

, например, мое имя столбца tax, tax имеет следующие значения:

TAX 
----- 
3681 
4292 
4895 
1894 
1127 

программа должна показать номера 3681 и 1127. любой ответ очень ценится. Кстати, наша школа использует MS SQL Server 2000.

+0

Похоже, вопрос HW мне ... Вы можете показать нам пример les, что вы, возможно, пробовали? С чем конкретно вы сталкиваетесь? Мы помогаем вам отлаживать и решать ваш вопрос, но мы не будем писать его для вас, если вы не попробуете себя :) –

+2

Используя логику, вы заключаете, что 3681 и 1127 являются «первым и последним нечетным числом»? Если только учитывать последнюю цифру, то sgeddes имеет ее, если это ошибка, и вы действительно хотите, чтобы первая и последняя, ​​как в самом низком и высоком, тогда мой ответ имел это. Если вы имеете в виду первый и последний из своего неупорядоченного списка, это другое дело. –

+1

Приятно слышать, что ваша школа постоянно обновляется. SQL Server 2000 не входит даже в * расширенную поддержку Microsoft. –

ответ

-1
select tax from Table fetch first 1 row only; 
select tax from table fetch last 1 row only; 
+0

что? это то, о чем вы просили ... – koem

+0

о, понял. меняя мой ответ – koem

0
SELECT MIN(tax), Max(tax) 
FROM Table 
WHERE tax %2 <> 0 

Демо: SQL Fiddle

Если вы на самом деле хотите, первый и последний из вашего неупорядоченного списка, это сложнее положение и результаты могут быть противоречивыми, так как без значения для ORDER BY вы не можете гарантия заказ. Обычно используют ROW_NUMBER(), но не доступны в 2000 году, если это то, что вы после этого есть варианты, проще всего было бы сделать:

SELECT Tax, IDENTITY(1,1) as TaxID 
INTO Table2 
FROM Table1 

SELECT (SELECT TOP 1 Tax FROM Table2 WHERE Tax %2 <> 0 ORDER BY TaxID) 
     ,(SELECT TOP 1 Tax FROM Table2 WHERE Tax %2 <> 0 ORDER BY TaxID DESC) 
+0

Кто-нибудь хочет объяснить их downvote? –

0

Из моего понимания вашего вопроса, вы ищете строки с наименьшим или самым высоким нечетным числом в качестве последнего символа? Если это так, то это должно работать:

select t.tax 
from yourtable t 
    join (
    select min(right(tax,1)) minoddchar, max(right(tax,1)) maxoddchar 
    from yourtable 
    where tax % 2 = 1 --ensure odd result 
    ) t2 on right(t.tax,1) in (t2.minoddchar, t2.maxoddchar) 
0

Вы можете использовать это:

SELECT tax FROM Table ORDER BY tax.id ASC LIMIT 1 
UNION 
SELECT tax FROM Table ORDER BY tax.id DESC LIMIT 1 

или это:

SELECT MIN(tax.id), tax FROM Table 
UNION 
SELECT MAX(tax.id), tax FROM Table 
Смежные вопросы