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

Откуда:
Сообщений: 710
Здравствуйте ! Буду благодарен за помощь в такой ситуации, есть T-SQL код
declare @tp_ListId uniqueidentifier
set @tp_ListId='{745DAFDB-28AD-42F8-A061-D2FE42D46C6B}'

declare @tp_HistoryListId uniqueidentifier
set @tp_HistoryListId=0x046F32D9FB8AF9428E5390FB7175EDEB 


SELECT     sp_list.tp_ID AS ИД, sp_list.nvarchar1 AS Название, *,
stuff(( select ', ' + ui.tp_Title
            from WSS_Content_15000.dbo.AllUserDataJunctions audj inner join
                 WSS_Content_15000.dbo.UserInfo ui
            ON audj.tp_Id = ui.tp_ID
            WHERE audj.tp_DocId = sp_list.tp_DocId
            and ui.tp_SiteID = '{CBCE8596-8B92-4981-B5E5-D912F91A4131}'
            and audj.tp_SourceListId='{745DAFDB-28AD-42F8-A061-D2FE42D46C6B}'
            and audj.tp_FieldId='{392A4CC3-3A67-43DE-9658-B22A2405D429}'
            for xml path('')), 1, 1, '') as Authors,

            (select cast(round(100/(count(ui.tp_Title)),2) as nvarchar) + '.00'
            from WSS_Content_15000.dbo.AllUserDataJunctions audj inner join
                 WSS_Content_15000.dbo.UserInfo ui
            ON audj.tp_Id = ui.tp_ID
            WHERE audj.tp_DocId = sp_list.tp_DocId
            and ui.tp_SiteID = '{CBCE8596-8B92-4981-B5E5-D912F91A4131}'
            and audj.tp_SourceListId='{745DAFDB-28AD-42F8-A061-D2FE42D46C6B}'
            and audj.tp_FieldId='{392A4CC3-3A67-43DE-9658-B22A2405D429}')
            as [Сумма, руб],
            
PARSENAME(REPLACE(sp_list.ntext5, ';#', ' '), 1) AS [ЦО Автора], sp_list.nvarchar7 as [Офис],
stuff(( select ', ' + ui.tp_Title
            from WSS_Content_15000.dbo.AllUserDataJunctions audj inner join
                 WSS_Content_15000.dbo.UserInfo ui
            ON audj.tp_Id = ui.tp_ID
            WHERE audj.tp_DocId = sp_list.tp_DocId
            and ui.tp_SiteID = '{CBCE8596-8B92-4981-B5E5-D912F91A4131}'
            and audj.tp_SourceListId='{745DAFDB-28AD-42F8-A061-D2FE42D46C6B}'
            and audj.tp_FieldId='{20919990-7455-44A3-9977-62994DDD6947}'
            for xml path('')), 1, 1, '') AS [Ответственный за внедрение]

FROM       WSS_Content_15000.dbo.AllUserData AS sp_list with(nolock) inner join WSS_Content_15000.dbo.AllUserData j_wf with(nolock)
               ON j_wf.int2 = sp_list.tp_ID
               
WHERE      j_wf.tp_ListId=@tp_HistoryListId
           AND j_wf.nvarchar4 = '{4c73fdf5-121f-426e-aff2-c095b3b60941}'
           AND j_wf.nvarchar7 like N'Утверждено%'
           AND sp_list.tp_ListId = @tp_ListId

Нужно чтобы из результирующего набора данных выводилось только конкретная информация по столбцу Authors
AND Authors = 'ПупкинВВ'
Если дописать в конце возвращает
автор
Сообщение 4104, уровень 16, состояние 1, строка 63
Не удалось привязать составной идентификатор "ui.Authors".
Сообщение 207, уровень 16, состояние 1, строка 66
Недопустимое имя столбца "Authors".

Я T-SQL очень слабо знаю, но в таблице WSS_Content_15000.dbo.AllUserData джоин по которому идёт после WHERE основного SELECT никакой информации о 'ПупкинеВВ' нету, она подтягивается из столбца tp_Title таблицы WSS_Content_15000.dbo.UserInfo при самом первом джоине, а туда лезть не надо, чтобы не нарушить структуру организации всего запроса, а надо только как-то организовать ещё до выборку соответствия по столбцу Authors результата запроса и столбца tp_Title таблицы WSS_Content_15000.dbo.UserInfo.
6 июн 12, 19:39    [12677796]     Ответить | Цитировать Сообщить модератору
 Re: T-SQL нужна небольшая помощь  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
stavgreengo,

как всем хорошо известно, SELECT логически выполняется после WHERE.
Но Authors определено именно в SELECTе.
Как же в таком случае можно использовать это имя в WHERE?

Весь запрос надо рассматривать как производную таблицу,
а желаемое ограничение написать в WHERE SELECTа уже из этой производной таблицы
6 июн 12, 21:55    [12678344]     Ответить | Цитировать Сообщить модератору
 Re: T-SQL нужна небольшая помощь  [new]
Contrast
Member

Откуда: Москва
Сообщений: 190
А без шаманства с T-SQL прямо в базе, вызовом функции(-й) API Sharepoint-а эту задачу не решить?
6 июн 12, 23:26    [12678628]     Ответить | Цитировать Сообщить модератору
 Re: T-SQL нужна небольшая помощь  [new]
Call_me_gosu
Member

Откуда:
Сообщений: 72
Contrast,
попробуй так:
declare @tp_ListId uniqueidentifier
set @tp_ListId='{745DAFDB-28AD-42F8-A061-D2FE42D46C6B}'

declare @tp_HistoryListId uniqueidentifier
set @tp_HistoryListId=0x046F32D9FB8AF9428E5390FB7175EDEB

select * from (сюда вставь свой select )
where Authors = 'ПупкинВВ'
7 июн 12, 17:13    [12683568]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить