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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.01 c
1-98676
Eugene_29
2003-10-20 19:25
2003.10.30
Поле ввода фикс. размера с автомат. изменяющимся размером шрифта


3-98507
Брат
2003-10-09 10:55
2003.10.30
Как на основе 2 вычисляемых полей посчитать третье?


1-98598
AlexTregubov
2003-10-19 13:59
2003.10.30
Меню в CoolBar


1-98667
Ilg
2003-10-20 18:40
2003.10.30
Вкладки TPageControl


14-98846
Knight
2003-10-11 02:14
2003.10.30
Свои курсоры в своей компоненте...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский