Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 В чем различие запросов?  [new]
vah
Member

Откуда:
Сообщений: 2649
ALTER FUNCTION [dbo].[_SrokOkonchSogl]()
RETURNS 
@T1 TABLE 
(

      -- Add the column definitions for the TABLE variable here

      InstanceID uniqueidentifier not null, 

      ActualEndDate datetime null

)
AS

BEGIN

      -- Fill the table variable with the rows for your result set
      INSERT INTO @T1 ( InstanceID, ActualEndDate )
      SELECT For_New_Dogovor_Total.InstanceID, Max(For_New_Dogovor_Total.ActualEndDate) AS [Max-ActualEndDate]
      FROM For_New_Dogovor_Total
      GROUP BY For_New_Dogovor_Total.InstanceID;
      UPDATE @T1 SET ActualEndDate = null WHERE InstanceID IN 
    (select distinct InstanceID from For_New_Dogovor_Total where ActualEndDate is null 
      and not ActualStartDate is null);
      return;
END

и

SELECT InstanceID, Max(case when ActualEndDate is null 

      and ActualStartDate is not null then null else ActualEndDate end) AS MaxActualEndDate

FROM For_New_Dogovor_Total

GROUP BY InstanceID;

?



Заранее благодарен.
29 окт 09, 11:27    [7854527]     Ответить | Цитировать Сообщить модератору
 Re: В чем различие запросов?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36800
Первый меняет функцию, а второй выбирает какие-то данные.
29 окт 09, 11:30    [7854561]     Ответить | Цитировать Сообщить модератору
 Re: В чем различие запросов?  [new]
Glory
Member

Откуда:
Сообщений: 104760
1ый изменяет текст функции, а 2ой выполняет выборку
29 окт 09, 11:30    [7854564]     Ответить | Цитировать Сообщить модератору
 Re: В чем различие запросов?  [new]
vah
Member

Откуда:
Сообщений: 2649
Гавриленко Сергей Алексеевич
Первый меняет функцию, а второй выбирает какие-то данные.

Вы издеваетесь?

Мне нужно первую функцию преобразовать во въюшку. Почему разные данные получаются?
Разве что-то в логике?
29 окт 09, 11:32    [7854584]     Ответить | Цитировать Сообщить модератору
 Re: В чем различие запросов?  [new]
Glory
Member

Откуда:
Сообщений: 104760
vah
Гавриленко Сергей Алексеевич
Первый меняет функцию, а второй выбирает какие-то данные.

Вы издеваетесь?

А не вы разве ?

vah

Мне нужно первую функцию преобразовать во въюшку. Почему разные данные получаются?

Потому что в функции две команды, а select - одна. Неужели это не видно ?
29 окт 09, 11:35    [7854616]     Ответить | Цитировать Сообщить модератору
 Re: В чем различие запросов?  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
Различие вот в этом:
Max(For_New_Dogovor_Total.ActualEndDate)
Max(case when ActualEndDate is null and ActualStartDate is not null then null else ActualEndDate end)
т.е. во втором появилось доп условие
and ActualStartDate is not null
которое влияет на результат ф-ии Max
29 окт 09, 11:36    [7854626]     Ответить | Цитировать Сообщить модератору
 Re: В чем различие запросов?  [new]
vah
Member

Откуда:
Сообщений: 2649
Дедушка
Различие вот в этом:
Max(For_New_Dogovor_Total.ActualEndDate)
Max(case when ActualEndDate is null and ActualStartDate is not null then null else ActualEndDate end)
т.е. во втором появилось доп условие
and ActualStartDate is not null
которое влияет на результат ф-ии Max


но так тоже почемуто не подходит

SELECT     TOP (100) PERCENT InstanceID, MAX(d) AS d

FROM         (SELECT DISTINCT 

                                              InstanceID, CASE WHEN ActualEndDate IS NULL AND ActualStartDate IS NOT NULL THEN NULL 

                                              ELSE For_New_Dogovor_Total.ActualEndDate END AS d

                       FROM          dbo.For_New_Dogovor_Total) AS www

GROUP BY InstanceID

ORDER BY d
29 окт 09, 11:37    [7854642]     Ответить | Цитировать Сообщить модератору
 Re: В чем различие запросов?  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
vah
но так тоже почемуто не подходит

не подходит куда и для чего?
29 окт 09, 11:39    [7854654]     Ответить | Цитировать Сообщить модератору
 Re: В чем различие запросов?  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Разве что-то в логике?

в логике.
в первом случае ActualEndDate устанавливается в null, если
условие where ActualEndDate is null and not ActualStartDate is null
выполняется для какой-нибудь строки с таким же InstanceID.
во втором, если оно выполняется для _данной_ строки.

Posted via ActualForum NNTP Server 1.4

29 окт 09, 11:39    [7854655]     Ответить | Цитировать Сообщить модератору
 Re: В чем различие запросов?  [new]
vah
Member

Откуда:
Сообщений: 2649
daw

> Разве что-то в логике?

в логике.
в первом случае ActualEndDate устанавливается в null, если
условие where ActualEndDate is null and not ActualStartDate is null
выполняется для какой-нибудь строки с таким же InstanceID.
во втором, если оно выполняется для _данной_ строки.


а как правильно будет?
29 окт 09, 11:43    [7854691]     Ответить | Цитировать Сообщить модератору
 Re: В чем различие запросов?  [new]
Glory
Member

Откуда:
Сообщений: 104760
vah
daw

> Разве что-то в логике?

в логике.
в первом случае ActualEndDate устанавливается в null, если
условие where ActualEndDate is null and not ActualStartDate is null
выполняется для какой-нибудь строки с таким же InstanceID.
во втором, если оно выполняется для _данной_ строки.


а как правильно будет?

Вот так https://www.sql.ru/forum/actualthread.aspx?tid=127456
29 окт 09, 11:43    [7854697]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить