Вниз
Скачать: CL | DM;

SQL В MSSQL   Найти похожие ветки 

← →
Stanislav ©   (2006-09-22 13:33) [0]

Почему в MSSQL не работает следующая конструкция:
Select A=([Filed1]*10), B=A*2
Хотя в SYBASE (родитель MSSQL) работает, да и в ACCESS от того же MS работает.
Понятно что без этого не сложно обойтись, но всеже интересно.


← →
StriderMan ©   (2006-09-22 13:36) [1]


> Почему в MSSQL не работает следующая конструкция:
> Select A=([Filed1]*10), B=A*2

и правильно. нечего ерундой маяццо.


← →
Ega23 ©   (2006-09-22 13:36) [2]


Set NoCount ON
Create Table #XXX (A int)
Insert into #XXX (A) Values (1)
Insert into #XXX (A) Values (2)
Insert into #XXX (A) Values (3)
Insert into #XXX (A) Values (4)
Insert into #XXX (A) Values (5)

Set NoCount OFF

Select A=A*10, B=A*2 from #XXX

Drop Table #XXX


Всё работает...


← →
Stanislav ©   (2006-09-22 13:39) [3]

Ega23 ©   (22.09.06 13:36) [2]
:-)

в первой строке B=2,  а должно  20.


← →
sniknik ©   (2006-09-22 13:40) [4]

Ega23 ©   (22.09.06 13:36) [2]
у тебя нет обращения по алиасу как в [0].

с алиасом действительно в аксессе работает а в mssql нет, что странно т.к. аналогичные продукты одной фирмы...


← →
Ega23 ©   (2006-09-22 13:41) [5]

А, вон ты о чём...
Это тебе не excel, брат....


← →
Stanislav ©   (2006-09-22 13:42) [6]

А в оракле работает?


← →
Stanislav ©   (2006-09-22 13:44) [7]

Не Excel, но код был бы понятнее, а так приходится либо дублировать одно и тоже вычисление или делать вложеный запрос.
Интересно, а при дублировании одного и того же вычисления, оно и пересчитывается столько же раз?


← →
Ega23 ©   (2006-09-22 13:48) [8]


Set NoCount ON
Create Table #XXX (A int)
Insert into #XXX (A) Values (1)
Insert into #XXX (A) Values (2)
Insert into #XXX (A) Values (3)
Insert into #XXX (A) Values (4)
Insert into #XXX (A) Values (5)

Select A=A*10 into #XXX1 from #XXX

Set NoCount OFF
Select A, B=A*2 from #XXX1

Drop Table #XXX
Drop Table #XXX1



Вот так изгольнулся.


← →
Stanislav ©   (2006-09-22 13:51) [9]

МОЖНО  ТАК :-)
Set NoCount ON
Create Table #XXX (A int)
Insert into #XXX (A) Values (1)
Insert into #XXX (A) Values (2)
Insert into #XXX (A) Values (3)
Insert into #XXX (A) Values (4)
Insert into #XXX (A) Values (5)

Select A, B=A*2 from (Select A=A*10  from #XXX) AS Q

Drop Table #XXX


← →
Romkin ©   (2006-09-22 14:45) [10]


> в первой строке B=2,  а должно  20.

Нет, не должно. Все вычисления выполняются параллельно по стандарту.


← →
evvcom ©   (2006-09-22 15:07) [11]

> [6] Stanislav ©   (22.09.06 13:42)

Нет, не работает. А вот как в [9] тоже пройдет.


← →
Курдль ©   (2006-09-22 15:35) [12]


> Stanislav ©   (22.09.06 13:42) [6]
> А в оракле работает?

В DB2 AS/400 тоже не работает :(
Только такой: with T1 as (select ([FIELD]*10) as A from [TABLE])
select (A * 2) as B
from T1


В общем, фигни какие-то, а не СУБД :(


← →
Val ©   (2006-09-22 15:41) [13]

>[6] Stanislav ©   (22.09.06 13:42)
нет.


← →
MOA ©   (2006-09-22 15:43) [14]

>Почему ... не работает :
Есть ли разница:
SELECT [A]=([P]*10), [B]=2*[A] FROM ...
и
SELECT [B]=2*[A], [A]=([P]*10) FROM ...

Если есть - т.е. получаются разные В - про операции над множествами смело забываем - имеем замороченный императивный язык, отслеживающий порядок исполнения и т.д. А как с триггерами быть? Сколько раз их вызывать? В каком порядке? И т.д.

В принятой реализации SQL - разницы нет - берётся то значение, которое было ДО операции - всё логично.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.03 c
2-1159281738
jjj
2006-09-26 18:42
2006.10.15
Вопрос по DBGrid`у


3-1155627561
Death
2006-08-15 11:39
2006.10.15
Создание индексов в THalcyonDataSet


1-1157442128
speaker_avi
2006-09-05 11:42
2006.10.15
вопрос о monthcalendar


15-1158757874
Cyrax
2006-09-20 17:11
2006.10.15
Языковая панель в Windows XP


2-1159423777
vodvorezlaya
2006-09-28 10:09
2006.10.15
Прочитал мануал и не могу понять что за оператор "as" и зачем он.




   Наверх