Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 подскажите как реализовать запрос  [new]
sfsf
Member [скрыт]

Откуда:
Сообщений: 1022
таблица ff
ID code
444 1
444 2
100 1
110 2
110 1

code=1 (код№1)
code=2 (код№2)

Нужен запрос на поиск определенного ID (допустим найти ID=444), в таком виде

ID расшифровка_code1 расшифровка_code2
444 код№1 код№2

Если нужно найти ID=100 и 110 то результат вывода такой
100 код№1
110 код№1 код№2

Как это реализовать?
24 дек 15, 16:01    [18605083]     Ответить | Цитировать Сообщить модератору
 Re: подскажите как реализовать запрос  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
а пар кодом может быть только 1 и 2 ...илил еще есть 3 и 4 ?
Всегда ли ID обязан иметь код 1 ..или моджет быть только со вторым ?
24 дек 15, 16:05    [18605117]     Ответить | Цитировать Сообщить модератору
 Re: подскажите как реализовать запрос  [new]
sfsf
Member [скрыт]

Откуда:
Сообщений: 1022
а пар кодом может быть только 1 и 2 ...илил еще есть 3 и 4 ? еще есть 3. Больше нету кодов
Всегда ли ID обязан иметь код 1 ..или моджет быть только со вторым ? Нет, может только и 2
24 дек 15, 16:16    [18605159]     Ответить | Цитировать Сообщить модератору
 Re: подскажите как реализовать запрос  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
select
  t1.ID
 ,case when t1.code =1 then 'код№1' else 'код№2' end
 ,ISNULL(case when t2.code =1 then 'код№1' else 'код№2' end, '')
from table t1
 left outer join table t2 on t1.ID =t2.ID and t1.code !=t2.code
24 дек 15, 16:22    [18605191]     Ответить | Цитировать Сообщить модератору
 Re: подскажите как реализовать запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Maxx
select
  t1.ID
 ,case when t1.code =1 then 'код№1' else 'код№2' end
 ,ISNULL(case when t2.code =1 then 'код№1' else 'код№2' end, '')
from table t1
 left outer join table t2 on t1.ID =t2.ID and t1.code !=t2.code
А в каком случае case when t2.code =1 then 'код№1' else 'код№2' end IS NULL ?
24 дек 15, 16:40    [18605268]     Ответить | Цитировать Сообщить модератору
 Re: подскажите как реализовать запрос  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
iap,

пересмотрев - вообще хрень написанна:)
24 дек 15, 16:45    [18605292]     Ответить | Цитировать Сообщить модератору
 Re: подскажите как реализовать запрос  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
помоему хотели чет типа етого

select
  t1.ID
 ,case MIN(t1.code) when  1 then N'код№1' when 2 then  N'код№2' else '' end
 ,case  when MAX(t1.code)= 1 and MIN(t1.code)<>MAX(t1.code) then N'код№1' when MAX(t1.code)= 2 and MIN(t1.code)<>MAX(t1.code) then  N'код№2' else '' end
from table t1
group by t1.ID
24 дек 15, 16:53    [18605334]     Ответить | Цитировать Сообщить модератору
 Re: подскажите как реализовать запрос  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20584
SELECT
     t0.id
,    CASE WHEN t1.code IS NOT NULL THEN 'код№1' ELSE '' END `расшифровка_code1`
,    CASE WHEN t2.code IS NOT NULL THEN 'код№2' ELSE '' END `расшифровка_code2`
FROM (
     SELECT DISTINCT id FROM datatable
     ) t0
LEFT JOIN 
     datatable t1 ON t0.id = t1.id AND t1.code=1
LEFT JOIN 
     datatable t2 ON t0.id = t2.id AND t1.code=2
24 дек 15, 16:57    [18605355]     Ответить | Цитировать Сообщить модератору
 Re: подскажите как реализовать запрос  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20584
Запрос предполагает, что в исходной таблице нет полностью идентичных записей.
24 дек 15, 16:57    [18605359]     Ответить | Цитировать Сообщить модератору
 Re: подскажите как реализовать запрос  [new]
3unknown
Member

Откуда: New York
Сообщений: 140
create table #ff(ID int, code int)

insert #ff
select 444, 1
union
select 444, 2
union
select 100, 1
union
select 110, 2
union
select 110, 1



select id,case code_1 when 1 then 'code_1' end as decode_1,case code_2 when 2 then 'code_2' end as decode_2
from(
select id,[1] as code_1,[2] as code_2  
from #ff
pivot
(
max(code)
for code in([1],[2])
) AS PivotTable
) a
24 дек 15, 17:04    [18605385]     Ответить | Цитировать Сообщить модератору
 Re: подскажите как реализовать запрос  [new]
Jaffar
Member

Откуда:
Сообщений: 633
to ALL,

Неужели никому не пришло в голову вот это

select ID,
IsNULL(max(case when Code = 1 then 'kod №1' end),'')+
IsNULL(max(case when Code = 2 then 'kod №2' end),'')+
IsNULL(max(case when Code = 3 then 'kod №3' end),'') ALL_123
from Table1
where
		ID = 100
group by ID
25 дек 15, 12:57    [18608905]     Ответить | Цитировать Сообщить модератору
 Re: подскажите как реализовать запрос  [new]
Bator
Member

Откуда: Порт пяти морей
Сообщений: 439
create table #ff(ID int, code int)

insert #ff
select 444, 1
union
select 444, 2
union
select 100, 1
union
select 110, 2
union
select 110, 1
union
select 100, null

select * from #ff

select 
   x.ID 
  ,rtrim((select 'Код№'+cast(code as varchar)+ ' ' as 'data()' from #ff as z where z.ID=x.ID for xml path(''))) as Codes
from #ff as x
group by x.ID

drop table #ff




sfsf
таблица ff
ID code
444 1
444 2
100 1
110 2
110 1

code=1 (код№1)
code=2 (код№2)

Нужен запрос на поиск определенного ID (допустим найти ID=444), в таком виде

ID расшифровка_code1 расшифровка_code2
444 код№1 код№2

Если нужно найти ID=100 и 110 то результат вывода такой
100 код№1
110 код№1 код№2

Как это реализовать?
29 дек 15, 09:48    [18621472]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить