powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
12 сообщений из 12, страница 1 из 1
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
    #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
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
    #32068879
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем разница c

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


?

Или была надежда, что @i = @i + 1 будет выполятся для каждой записи?
...
Рейтинг: 0 / 0
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
    #32068884
Была не надежда, а уверенность
...
Рейтинг: 0 / 0
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
    #32068887
fima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если можно, кусочек Вашей таблицы t_PayHistoryInActs приведите. У меня не получилось Ваш результат повторить...
...
Рейтинг: 0 / 0
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
    #32068889
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
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
    #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
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
    #32068901
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть такое
если делается сортировка, то результат не такой, какой хочется. Очевидно он (SQL) считает и хранит @i для каждой строки, а сортировка происходит потом, и @i выдаётся какое-то промежуточное. Но это моё объяснение, может оно далеко от истины. В любом случае order by здесь писать нельзя.
...
Рейтинг: 0 / 0
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
    #32068916
fima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы бы примеры данных дали, ну строчек 10 хотя бы... Ну никак у меня Ваш результат не получается и с order и без order, и с повторяющимися даннымии без них...
...
Рейтинг: 0 / 0
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
    #32068934
VAT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это нелогичная конструкция - делается попытка присвоить скалярной переменной векторное значение. То, что она как-то работает, не значит, что и дальше она будет работать так же. Возможнае варианты:
1.Ошибка.
2.Последовательный перебор.
3.Случайный перебор.
4.Для TOP 1.
5.Вобще фигня.
...
Рейтинг: 0 / 0
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
    #32069222
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
интересно .... а 1 это будет int 1 или поле № 1....
...
Рейтинг: 0 / 0
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
    #32069313
Фотография Lexis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а план запроса посмотреть?
полагаю, что количество иттераций при использовании в запросе ORDER BY FIELD будет влиять...если индекс по field или нет
т.е. при сортировке перебираются не все записи (FTS), а только часть (Index)
или есть поля с одинаковой датой...тогда вам 1 получите
...
Рейтинг: 0 / 0
ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
    #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
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ИНТЕРЕСНЫЙ РЕЗУЛЬТАТ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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