Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.11.02;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
2-1222322038
Kbl4AH
2008-09-25 09:53
2008.11.02
Вопрос по cxGrid


1-1201897002
elserpiente
2008-02-01 23:16
2008.11.02
ListView


2-1222402880
123-ий
2008-09-26 08:21
2008.11.02
Соединение с Инетом


11-1195121648
Альберт
2007-11-15 13:14
2008.11.02
при установки kol не найден exptintf.dcu


2-1222264607
Vitalts
2008-09-24 17:56
2008.11.02
Вставка записи с целочисленным значением