Цикл через столбцы SQL

Вы можете присоединиться к нескольким условиям для каждого случая:

select c.sur, c.fam, h.horoscope from customer c 
inner join horoscope h
on (c.fam = h.fam and c.sur = h.sur) or 
  (c.fam = h.fam and h.sur is null and not exists(
    select 1 from horoscope 
    where fam = c.fam and sur = c.sur
  )
)

См. Демонстрацию

.

5
задан Wadih M. 30 March 2009 в 15:59
поделиться

5 ответов

Ну, в случае известного числа столбцов можно сделать:

SELECT  
  MyName + " ->"
  + case OPTION1 when 1 then ' OPTION1' else '' end
  + case OPTION2 when 1 then ' OPTION2' else '' end
  + ...
FROM
 Table

Если столбцы неизвестны при создании запроса - я, вероятно, все еще пошел бы тем путем с некоторым динамично созданным SQL. Преимущество состоит в том, что код, вероятно, делает то, что Вы хотите и очень просты.

4
ответ дан 18 December 2019 в 14:51
поделиться

Вы могли бы хотеть взглянуть на Сводные таблицы.

4
ответ дан 18 December 2019 в 14:51
поделиться

Вы могли создать динамический оператор с помощью системного каталога:

http://msdn.microsoft.com/en-us/library/ms189082.aspx

2
ответ дан 18 December 2019 в 14:51
поделиться

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

  1. Необходимо нормализовать базу данных. Возможно, "Option1", "Option2" и т.д. не имеют ничего общего, но существует также хороший шанс, что они - повторяющаяся группа в Вашей таблице.

  2. Дисплей дескриптора выходит в слое дисплея Вашего приложения - т.е. фронтэнд, не база данных.

Как я сказал, возможно, они не применяются в Вашем случае по некоторой определенной причине, но на него от того, походит, что у меня есть чтение Вашего вопроса.

2
ответ дан 18 December 2019 в 14:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: