|
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) ...претендую на пятничность)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |