Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ / 12 сообщений из 12, страница 1 из 1
18.11.2002, 11:41:03
    #32068874
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
Какой по вашему должен получиться результат

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
declare @i int
 
set @i =  0 
 
select @i = @i +  1 
from t_PayHistoryInActs
order by PaymentDate asc



Я как и вы считал, что в переменной @i будет общее число записей в таблице.

А вот и нет - значение переменной 1, записей гораздо больше, чем одна.

Кто-нибудь может прокоментировать?
...
Рейтинг: 0 / 0
18.11.2002, 11:49:53
    #32068879
NNN
NNN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
А в чем разница c

Код: plaintext
1.
2.
3.
4.
declare @i int
set @i =  0 
set @i = @i +  1 
select @i


?

Или была надежда, что @i = @i + 1 будет выполятся для каждой записи?
...
Рейтинг: 0 / 0
18.11.2002, 11:53:03
    #32068884
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
Была не надежда, а уверенность
...
Рейтинг: 0 / 0
18.11.2002, 11:55:36
    #32068887
fima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
Если можно, кусочек Вашей таблицы t_PayHistoryInActs приведите. У меня не получилось Ваш результат повторить...
...
Рейтинг: 0 / 0
18.11.2002, 11:56:55
    #32068889
vap
vap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
А у меня одинаковый результат на SQL2000.
Это как больше ?

Код: plaintext
1.
2.
3.
4.
declare @i int
set @i =  0 
 
select @i = @i +  1  from SysObjects
select @i, count(*) from SysObjects
...
Рейтинг: 0 / 0
18.11.2002, 11:58:26
    #32068890
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
Могу даже скрипт таблицы


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
CREATE TABLE [dbo].[t_PayHistoryInActs] (
	[InItemId] [int] IDENTITY ( 1 ,  1 ) NOT NULL ,
	[Date] [datetime] NOT NULL ,
	[DocumentId] [int] NOT NULL ,
	[OperationId] [int] NOT NULL ,
	[ItemId] [int] NOT NULL ,
	[DocumentNo] [char] ( 24 ) NOT NULL ,
	[DocumentDate] [datetime] NOT NULL ,
	[PermitId] [int] NULL ,
	[OrderId] [int] NULL ,
	[CompanyId] [int] NOT NULL ,
	[CustomerId] [int] NOT NULL ,
	[TradeshopId] [int] NOT NULL ,
	[SaleRepId] [int] NOT NULL ,
	[DDate] [datetime] NOT NULL ,
	[PaymentTermId] [int] NOT NULL ,
	[DelayPayment] [int] NOT NULL ,
	[DelayType] [smallint] NOT NULL ,
	[PaymentDate] [datetime] NOT NULL ,
	[FirstPayment] [datetime] NULL ,
	[LastPayment] [datetime] NULL ,
	[FixPayment] [datetime] NULL ,
	[PayDelay] [int] NOT NULL ,
	[Amount] [money] NOT NULL ,
	[LeftAmount] [money] NOT NULL ,
	[PayPercent] [int] NOT NULL ,
	[OnControl] [bit] NOT NULL 
) ON [PRIMARY]
GO

 CREATE  CLUSTERED  INDEX [IX_PayHistoryInActs_Date] ON [dbo].[t_PayHistoryInActs]([Date]) WITH  FILLFACTOR =  80  ON [PRIMARY]
GO

ALTER TABLE [dbo].[t_PayHistoryInActs] WITH NOCHECK ADD 
	CONSTRAINT [PK_PayHistoryInActs] PRIMARY KEY  NONCLUSTERED 
	(
		[InItemId]
	)  ON [PRIMARY] ,
	CONSTRAINT [AK_PayHistoryInActs_UniqueDocumentItem] UNIQUE  NONCLUSTERED 
	(
		[DocumentId],
		[OperationId],
		[ItemId]
	)  ON [PRIMARY] 
GO

 CREATE  INDEX [IX_PayHistoryInActs_PayDelay] ON [dbo].[t_PayHistoryInActs]([PayDelay]) ON [PRIMARY]
GO

 CREATE  INDEX [IX_PayHistoryInActs_PayPercent] ON [dbo].[t_PayHistoryInActs]([PayPercent]) ON [PRIMARY]
GO
...
Рейтинг: 0 / 0
18.11.2002, 12:16:05
    #32068901
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
есть такое
если делается сортировка, то результат не такой, какой хочется. Очевидно он (SQL) считает и хранит @i для каждой строки, а сортировка происходит потом, и @i выдаётся какое-то промежуточное. Но это моё объяснение, может оно далеко от истины. В любом случае order by здесь писать нельзя.
...
Рейтинг: 0 / 0
18.11.2002, 12:38:22
    #32068916
fima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
Вы бы примеры данных дали, ну строчек 10 хотя бы... Ну никак у меня Ваш результат не получается и с order и без order, и с повторяющимися даннымии без них...
...
Рейтинг: 0 / 0
18.11.2002, 13:02:09
    #32068934
VAT
VAT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
Это нелогичная конструкция - делается попытка присвоить скалярной переменной векторное значение. То, что она как-то работает, не значит, что и дальше она будет работать так же. Возможнае варианты:
1.Ошибка.
2.Последовательный перебор.
3.Случайный перебор.
4.Для TOP 1.
5.Вобще фигня.
...
Рейтинг: 0 / 0
18.11.2002, 17:45:02
    #32069222
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
интересно .... а 1 это будет int 1 или поле № 1....
...
Рейтинг: 0 / 0
18.11.2002, 21:05:07
    #32069313
Lexis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
а план запроса посмотреть?
полагаю, что количество иттераций при использовании в запросе ORDER BY FIELD будет влиять...если индекс по field или нет
т.е. при сортировке перебираются не все записи (FTS), а только часть (Index)
или есть поля с одинаковой датой...тогда вам 1 получите
...
Рейтинг: 0 / 0
18.11.2002, 21:30:28
    #32069318
Lexis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
вот в таком случае @i=1
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
  | --Sort(ORDER BY:([Records].[ext] DESC))
 
       | --Compute Scalar(DEFINE:([Expr1002]=[@i]+1))
 
            | --Clustered Index Scan(OBJECT:([FoxTemp].[dbo].[Records].[IX_Records]))
 

...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]