Вниз
Скачать: 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.026 c
15-1158672046
Оксана
2006-09-19 17:20
2006.10.15
Работа


15-1158762969
DillerXX
2006-09-20 18:36
2006.10.15
Стоит ли менять монитор на ЖК?


1-1156933031
ссщн
2006-08-30 14:17
2006.10.15
Как убрать "моргание" TabSheet`а когда кидаю на него компонент?


2-1158311101
Avgust
2006-09-15 13:05
2006.10.15
Сервис и реестр


15-1158500782
databaser
2006-09-17 17:46
2006.10.15
Какую single user / local side / freeware ;) DB посоветуете?




   Наверх