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

Вниз

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

 
OlkaGTS ©   (2003-10-09 12:31) [0]

Уважаемые! Помогите, пожалуйста, с запросом, если это в принципе возможно.
DB MSSQL Server 2000
Есть 2 таблицы:

PriceKinds:

PKID NAME
1 Name1
2 Name2
3 Name3

Prices:
PKID TID Price
1 T1 P11
1 T2 P12
2 T1 P21
3 T2 P32

Надо получить следующее:
TID Name1 Name2 Name3
T1 P11 P21
T2 P12 P32

На словах это выглядит так:
Есть список видов цен. Вами цены храняться в таблице, где указывается вид цены, товар и сама цена. А получать надо таблицу, где первая колонка - товар, а дальше последовательно все виды цен и в них цены по товару, если таковые есть


 
Fiend ©   (2003-10-09 12:51) [1]

пользуйте динамический SQL.


 
OlkaGTS ©   (2003-10-09 13:17) [2]

Каким образом использовать?


 
Дуся   (2003-10-09 13:23) [3]

А число вариантов TID известно?..
в Books Online есть пример: Cross-Tab Reports.


 
OlkaGTS ©   (2003-10-09 13:28) [4]

Число вариантов неизвестно. Сколько пользователь создаст, столько и будет


 
Дуся   (2003-10-09 14:46) [5]

Многие средства построения отчетов позволяют делать cross-table. Вам обязательно это в запросе делать?..

Простым select боюсь ничего не выйдет. С помощью sp и временных таблиц внутри - да.


 
Fiend ©   (2003-10-09 15:38) [6]

могу для примера дать скрипт ХП которая строит т.н. шахматку. подойдёт?

там как раз неизвестно кол-во столбцов и всё динамически


 
OlkaGTS ©   (2003-10-09 16:17) [7]

Дайте, пожалуйста. Большое спасибо. E-Mail: OlkaGTS@mail.ru


 
Fiend ©   (2003-10-09 16:31) [8]

CREATE PROCEDURE [MO_Get_OUT_To_Faces2] AS
declare @Max_Account int,
@Accounter int,
@Exec varchar(8000),
@ExecEx1 varchar(8000)

select "Column_ID"=identity(int,1,1),AP.Account_ID,AP.Account,
"SK_Account_ID"=J.Account_KT
into #Temp_Accounts
from MO_Journal_Operations J,ACC_Account_Plan AP
where J.Account_KT in (18,19,23,26) and J.Subconto_DT2 is not null and J.Account_DT=AP.Account_ID
group by AP.Account_ID,AP.Account,J.Account_KT
order by AP.Account

set @Max_Account=@@Identity
set @Accounter=1
set @Exec="select "+""""+"Накладная"+""""+"="+""""+"Общ.итог"+""","
set @ExecEx1=""

while @Accounter<=@Max_Account
begin
set @Exec=@Exec+""""+(select Account from #Temp_Accounts where Column_ID=@Accounter)+""""+
"=sum(case when J.Account_DT="+(select convert(varchar(4),Account_ID) from #Temp_Accounts where Column_ID=@Accounter)+
" and J.Account_KT="+(select convert(varchar(4),SK_Account_ID) from #Temp_Accounts where Column_ID=@Accounter)+" then J.Sum_Operation"+" else 0 end)"

set @ExecEx1=@ExecEx1+(select convert(varchar(4),Account_ID) from #Temp_Accounts where Column_ID=@Accounter)
if @Accounter<>@Max_Account set @ExecEx1=@ExecEx1+","

set @Exec=@Exec+","
set @Accounter=@Accounter+1
end
set @Exec=@Exec+""""+"Итого"+""""+"=sum(case when J.Account_DT in ("+@ExecEx1+") then J.Sum_Operation else 0 end) "
+"from MO_Journal_Operations J,ACC_Subconto S
where J.Account_KT in (18,19,23,26) and J.Subconto_DT2=S.Subconto_ID and S.Subconto_Type_ID =12"
exec(@Exec)

drop table #Temp_Accounts

GO



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

Текущий архив: 2003.10.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.034 c
9-98422
luciy
2003-04-25 18:35
2003.10.30
Clip


1-98597
kopcap
2003-10-19 16:11
2003.10.30
размер exe


1-98554
Wadim
2003-10-20 13:30
2003.10.30
TDateTime


3-98454
qwe
2003-10-10 11:23
2003.10.30
Как можно сделать select из XML и с помощью какого компонента


14-98859
J.C. code
2003-10-10 19:45
2003.10.30
Управление окном