|   |   | 
| 
 | MS SQL: выбор во временную таблицу по условию | ☑ | ||
|---|---|---|---|---|
| 0
    
        extrim-style 02.10.15✎ 15:19 | 
        Подскажите как выбрать во временную таблицу по условию?
 Если делаю так: if object_id('tempdb..#idmails') is not null drop table #idmails if @idmail = 0 begin select 5 as test into #idmails end else begin select 6 as test into #idmails end то получаю ошибку "There is already an object named '#idmails' in the database." | |||
| 1
    
        МихаилМ 02.10.15✎ 15:21 | 
        ошиблись  форумом.
 Вам на sql.ru | |||
| 2
    
        rs_trade 02.10.15✎ 15:21 | 
        (0) не уверен что tempdb писать надо. скуль сам знает где у него временные таблицы лежат.     | |||
| 3
    
        rs_trade 02.10.15✎ 15:22 | 
        (1) норм. все интересней чем вопросы про не обнаруженное поле агрегатного объекта.     | |||
| 4
    
        1Сергей 02.10.15✎ 15:22 | 
        воспользуйся кейсом     | |||
| 5
    
        extrim-style 02.10.15✎ 15:22 | 
        (1) прочел как "не знаю, но стыдно признаться"     | |||
| 6
    
        Господин ПЖ 02.10.15✎ 15:23 | 
        а чо его искать?
 drop table #idmails и все | |||
| 7
    
        extrim-style 02.10.15✎ 15:24 | 
        (5) это есть в (0)     | |||
| 8
    
        extrim-style 02.10.15✎ 15:24 | 
        (4) пробовал, не получилось. Сейчас приведу пример.     | |||
| 9
    
        МихаилМ 02.10.15✎ 15:25 | 
        (0)
 зачем указвать # () в ..#idmails в контекте tempdb ? | |||
| 10
    
        1Сергей 02.10.15✎ 15:27 | 
        (8) 
 if object_id('tempdb..#idmails') is not null drop table #idmails select CASE WHEN @idmail = 0 THEN 5 ELSE 6 END as test into #idmails | |||
| 11
    
        extrim-style 02.10.15✎ 15:28 | 
        (9) вроде бы это более-менее стандартная команда уничтожения временных таблиц?     | |||
| 12
    
        1Сергей 02.10.15✎ 15:28 | 
        SQL - это не язык программирования     | |||
| 13
    
        N1kMZ 02.10.15✎ 15:30 | 
        (11)
 if object_id('tempdb..#idmails') is not null drop table #idmails DECLARE @idmail int SET @idmail = 0 select CASE WHEN @idmail = 0 THEN 5 ELSE 6 END as test into #idmails Всё работает | |||
| 14
    
        N1kMZ 02.10.15✎ 15:36 | 
        (6) Потому что будет: Cannot drop the table '#idmails', because it does not exist or you do not have permission.     | |||
| 15
    
        extrim-style 02.10.15✎ 15:44 | 
        (10) в (0) - упрощенная задача
 на самом деле мне нужно так: if object_id('tempdb..#idmails') is not null drop table #idmails declare @idmail int set @idmail=5 select 5 as idmail into #idmails union all select 7 as idmail select * from #idmails where case when @idmail=0 then idmail > 6 when @idmail<>0 then idmail = @idmail end Как это правильно обставить? | |||
| 16
    
        extrim-style 02.10.15✎ 15:48 | 
        +(15) в этом случае ругается на Incorrect syntax near '>'.
 Но, видимо, так и нельзя строить код, т.к. после "then" подразумевается конкретное выражение, а не условие. | |||
| 17
    
        1Сергей 02.10.15✎ 15:48 | 
        (15) ты заполняешь временную таблицу из которой тут же берёшь данные?     | |||
| 18
    
        extrim-style 02.10.15✎ 15:49 | 
        (17) нет, я хочу заполнить временную таблицу в зависимости от условия     | |||
| 19
    
        Гёдза 02.10.15✎ 15:49 | 
        а разве селект инто сам делает криэйт?     | |||
| 20
    
        1Сергей 02.10.15✎ 15:50 | 
        (15) 
 вот эту порнографию where case when @idmail=0 then idmail > 6 when @idmail<>0 then idmail = @idmail end замени на where (@idmail=0 AND idmail > 6) OR (@idmail<>0 AND idmail = @idmail) | |||
| 21
    
        rs_trade 02.10.15✎ 15:50 | 
        (19) конэчно     | |||
| 22
    
        extrim-style 02.10.15✎ 15:56 | 
        (20) Спасибо!     | |||
| 23
    
        extrim-style 02.10.15✎ 15:57 | 
        +(22) ...претендую на пятничность)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |