Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.11.02;
Скачать: [xml.tar.bz2];

Вниз

Помогите с запросом   Найти похожие ветки 

 
b.lutz   (2008-04-16 18:34) [0]

есть 2 таблицы

Проекты (Описание некого проекта)
CREATE TABLE [dbo].[project](
[id] [int] NOT NULL,
[priority] [int] NOT NULL,
[name] [varchar](255) NOT NULL,
[sdate] [datetime] NOT NULL,
[fdate] [datetime] NOT NULL,
[GIP] [int] NULL,
CONSTRAINT [PK_project] PRIMARY KEY CLUSTERED

и

Перекрёстная таблица "Проекты-группы" (Какие группы учавствуют в каком проекте и каков соотв. статус участия)
CREATE TABLE [dbo].[group_project](
[id_project] [int] NOT NULL,
[id_group] [int] NOT NULL,
[id_status] [int] NOT NULL,
[last_event_id] [int] NULL,
CONSTRAINT [PK_group_project] PRIMARY KEY CLUSTERED

Исп. MSSQL и Delphi(BDS 2006)

dbGO (он же ADO)

подскажите почему не проходит запрос в TADODataSet (ругается на WITH):

WITH C (id_project, name, id_group, id_status) AS
(SELECT id_project, name, id_group, id_status FROM
group_project INNER JOIN project ON project.id=group_project.id_project)

SELECT id_project, name, [1] AS [209], [2] AS [212], [3] AS [220] FROM C
PIVOT (SUM(id_status) FOR [id_group] IN ([1], [2], [3])) AS PVT

в MSSQL Server Management Studio всё работает.


 
Johnmen ©   (2008-04-16 19:10) [1]

А ты часом МССКЛ с Ораклом не спутал? :)


 
b.lutz   (2008-04-17 08:56) [2]

не :)

использую SQLServer2005_SSMSEE (Который бесплатный)

яж говорю, в Server Management Studio запрос проходит, а через делфи нехочит :(


 
ЮЮ ©   (2008-04-17 09:46) [3]

ну так напиши без выпендрежа (без C и WITH)


 
ЮЮ ©   (2008-04-17 09:49) [4]

или PIVOT только с WITH работает?
BOL по 2005-му под рукой нет :(


 
b.lutz   (2008-04-17 11:50) [5]

Работать то работает, только из-за того что в таблице есть поле
[last_event_id] [int] NULL

и в ситуации когда они в разных записях отличаются, то получается не совсем тот PIVOT что хотелось бы, т.е. получается не так как мне нужно, а вот так:

как надо:

проект   название     209          212         220
312         Имя1           1             2            3
132         Имя2           2           NULL         1
........
........

а получается вот так  (без WITH):

проект   название     209          212         220
312         Имя1           1           NULL        NULL
312         Имя1          NULL          2          NULL
312         Имя1          NULL       NULL          3
132         Имя2           2           NULL         1
........
........

А так в общем разобрался, использовал ХП с параметрами

если кому надо:

ALTER PROCEDURE [dbo].[show_PVT]
@pFieldsName varchar(500),
@pFields varchar(100)
AS

DECLARE
@select VARCHAR(1000)

BEGIN

SET @select="WITH C (id_project, name, id_group, id_status) AS
(SELECT id_project, name, id_group, id_status FROM
group_project INNER JOIN project ON project.id=group_project.id_project)
SELECT id_project, name, "+@pFieldsName+" FROM C PIVOT (SUM(id_status) FOR [id_group] IN ("+@pFields+")) AS PVT"

EXEC(@select)

В делфе получаю список id групп и их имён, а потом параметром передаю в ХП


 
ЮЮ ©   (2008-04-18 03:06) [6]

> Работать то работает, только из-за того что в таблице есть
> поле
> [last_event_id] [int] NULL


а откуда это поле вдруг выплывет, если его нет в выборке?
Я имел в виду

SELECT
 id_project, name, [1] AS [209], [2] AS [212], [3] AS [220]
FROM
 (
   SELECT
     id_project, name, id_group, id_status
   FROM
     group_project
     JOIN project ON project.id=group_project.id_project
 ) С

PIVOT (SUM(id_status) FOR [id_group] IN ([1], [2], [3])) AS PVT


>
> EXEC(@select)

не боишься, что твою процедуру заюзают с параметром
"bla-bla-bla DELETE * FROM project bla-bla-bla1",
где bla-bla-bla и bla-bla-bla1 обеспечат синтаксисески верные SQL-предложения ?  :)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2008.11.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
2-1222416652
Iris
2008-09-26 12:10
2008.11.02
горячие клавиши на кнопку


2-1222422919
АндрейК
2008-09-26 13:55
2008.11.02
Как снять выделение и перейти в конец строки в Edit1


1-1201163795
mix
2008-01-24 11:36
2008.11.02
Изменение события OnClick у TButton


1-1201454613
viRUS
2008-01-27 20:23
2008.11.02
Прозрачность компонентов


15-1220722887
AlexDan
2008-09-06 21:41
2008.11.02
Экранная клавиатура..





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский