powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли развернуть данные из 2 стлб. табл. как массив MxN?
5 сообщений из 5, страница 1 из 1
Можно ли развернуть данные из 2 стлб. табл. как массив MxN?
    #32002645
Николай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!
Есть таблица t1(sct_id, top_id) .
Есть др. тбл. t2(sct_id, cnt) .
Возник вопрос:
можно ли получить t1 и t2 в виде:
cnt(sct_id, top_id) , т.е. в виде массива, по одному измерению которого были бы top_id , по другому - sct_id , а на их пересечениях - соответствующее значение cnt ?

!!!ЗАДАЧА заключается в том, что мне необходимо заполнить таблицы таким образом, чтобы не было бы различных sct_id , в которых состав top_id был бы одинаков.
...
Рейтинг: 0 / 0
Можно ли развернуть данные из 2 стлб. табл. как массив MxN?
    #32002647
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понял, то называется это Cross-Tab Query и одним запросом на сервере это можно сделать если заранее известно количество столбцов. Вроде такого запроса
SELECT t1.sct_id,
CASE t1.top_id=1 THEN t2.cnt ELSE 0 END AS R1,
CASE t1.top_id=2 THEN t2.cnt ELSE 0 END AS R2,
CASE t1.top_id=3 THEN t2.cnt ELSE 0 END) AS R3,.......
FROM t1 INNER JOIN t2 ON t2.sct_id = t1.sct_id
ORDER BY t1.sct_id

Из клиентских приложений Cross-Tab Query точно реализованы в Access-е.
...
Рейтинг: 0 / 0
Можно ли развернуть данные из 2 стлб. табл. как массив MxN?
    #32002650
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Николай
А не могли бы Вы это показать как-нибудь на примере? Со значениями таблиц?
Потому что то что Вы хотите (если я правильно понял) делается как
select sct_id, top_id, count(*) cnt
from t1
group by sct_id, top_id

Но наверное задача несколько сложнее
...
Рейтинг: 0 / 0
Можно ли развернуть данные из 2 стлб. табл. как массив MxN?
    #32002657
Николай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СПАСИБО ЗА CROSS-TAB QUERY! Я еще не знал про такую возможность!

А задачу свою по удалению записей из t1, где в связанных с ней записях в t2 одинаковый набор значений полей я все-таки решил!

-----=====***** УДАЛЕНИЕ ПОВТОРЯЮЩИХСЯ ПЕРЕСЕЧЕНИЙ ТВР *****=====------
-- СОЗДАНИЕ КУРСОРА
DECLARE c_sct CURSOR
GLOBAL SCROLL KEYSET
FOR
select distinct sct_id from intrsct
-- ОТКРЫТИЕ КУРСОРА
OPEN c_sct
-- РАБОТА С КУРСОРОМ
if @@cursor_rows > 1
BEGIN
-- определение переменных --
declare @i1 int
declare @i2 int
declare @cnt int
declare @r1 int
declare @r2 int
declare @sct1 int
declare @sct2 int
declare @t_cnt1 int
declare @t_cnt2 int
set @cnt = @@cursor_rows
set @r1 = 1
set @r2 = 2
-- процесс --
print '@cnt= '+convert(char(3),@cnt)
print '---------'
while (@r1<@cnt)
BEGIN
print '@r1 = '+convert(char(3),@r1)
while (@r2<=@cnt)
BEGIN
fetch absolute @r1 from c_sct into @sct1
fetch absolute @r2 from c_sct into @sct2

set @t_cnt1 = (select count(distinct top_id) from intrsct_top where sct_id=@sct1)
set @t_cnt2 = (select count(distinct top_id) from intrsct_top where sct_id=@sct2)
if (@t_cnt1=@t_cnt2) and ((select count(distinct top_id) from intrsct_top where sct_id in (@sct1, @sct2)) = @t_cnt1)
begin
-- удаление дублирующихся записей--
print '@r1 = '+convert(char(3),@r1)+' |@r2 = '+convert(char(3),@r2)+' deleted !'
delete from intrsct where sct_id = @sct2
delete from intrsct_top where sct_id = @sct2
end
-- else
SET @r2 = @r2+1
END
SET @r1 = @r1+1
SET @r2 = @r1+1
END
END--if
-- ЗАКРЫТИЕ КУРСОРА
CLOSE c_sct
-- УДАЛЕНИЕ КУРСОРА
DEALLOCATE c_sct
...
Рейтинг: 0 / 0
Можно ли развернуть данные из 2 стлб. табл. как массив MxN?
    #32002660
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
трудно понять что у вас написано, но попробуйте написать это же без курсоров и у вас будет раз в 5 короче
(на 99% уверен что это можно)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли развернуть данные из 2 стлб. табл. как массив MxN?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]