Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 справочник для группировкимассива данных  [new]
PlanB
Member

Откуда: Moscow
Сообщений: 2767
таблица a (справочник)
code
gr_5
num_sc
a_p

таблица b (цифры)
regn
num_sc
iitg

запрос
SELECT b.regn, a.code, a.gr_5, sum(b.iitg*a.a_p) as "iitg"
FROM [dbo].[gr_1] a
JOIN [dbo].[122011b1] b
ON a.num_sc LIKE b.num_sc
AND b.regn IN ('3342','1000')
GROUP BY b.regn, a.code, a.gr_5
ORDER BY 1, 2


в итоге получается, что строки из справочника не попадают в итоговые данные, если по ним нулевая сумма, что логично вроде как. дописываю LEFT к LOIN и получаю сначала справоочник с нулевыми полями таблицы б, а ниже то же самое, что и при простом JOIN. что я не так делабю, как мне сохранить исходный перечень строк справочника? как-то просто, но я не соображу совсем
22 авг 13, 12:56    [14741059]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2415
PlanB
что я не так делабю, как мне сохранить исходный перечень строк справочника? как-то просто, но я не соображу совсем


два раза перечитал, но так и не понял что вам надо
убрать дубли при left join ?
22 авг 13, 13:03    [14741105]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
Glory
Member

Откуда:
Сообщений: 104751
PlanB
описываю LEFT к LOIN и получаю сначала справоочник с нулевыми полями таблицы б, а ниже то же самое, что и при простом JOIN. что я не так делабю

NULL для ORDER всегда является наименьшим значением
22 авг 13, 13:05    [14741115]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
PlanB
Member

Откуда: Moscow
Сообщений: 2767
плохо я написал... есть справочник и определенного числа строк. через него проганяется таблица и множество ее цифр приводится к данным строкам. если строка нудевая, то она у меня не отображается. а очень бы хотелось ее видеть нулевой. кроме того, значения null появляются в строке regn, чего быть как бы не должно
22 авг 13, 14:05    [14741676]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
Glory
Member

Откуда:
Сообщений: 104751
PlanB
кроме того, значения null появляются в строке regn, чего быть как бы не должно

Стесняюсь спросить - и почему же не должно ?
22 авг 13, 14:07    [14741687]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
PlanB
Member

Откуда: Moscow
Сообщений: 2767
PlanB, под нулевой строкоя я имею ввиду сумму по строке равную 0
22 авг 13, 14:07    [14741690]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
Гость333
Member

Откуда:
Сообщений: 3683
PlanB
если строка нудевая, то она у меня не отображается. а очень бы хотелось ее видеть нулевой

Так вы же решили эту проблему ещё в первом посте, не?
PlanB
дописываю LEFT к LOIN и получаю сначала справоочник с нулевыми полями таблицы б, а ниже то же самое, что и при простом JOIN.
22 авг 13, 14:14    [14741747]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
PlanB
Member

Откуда: Moscow
Сообщений: 2767
справочник
codegr_5num_sca_p
111Касса202021
111Касса20203-1
112Корсчет в ЦБ301021
112Корсчет в ЦБ301041


цифры
regnnum_sciitg
1000202021
1000301022
1481202023
1481202036


итог, то, что я хочу
renggr_5iitg
1000111Касса1
1000112Корсчет в ЦБ2
1481111Касса-3
1481112Корсчет в ЦБ0
22 авг 13, 14:16    [14741760]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
PlanB
Member

Откуда: Moscow
Сообщений: 2767
а получается у меня вот это


rengcodegr_5iitg
NULL111КассаNULL
NULL112Корсчет в ЦБNULL
1000111Касса1
1000112Корсчет в ЦБ2
1481111Касса-3
22 авг 13, 14:17    [14741777]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
Glory
Member

Откуда:
Сообщений: 104751
Ваш вопрос о том, как вместо NULL вывести 0 что ли ?
22 авг 13, 14:19    [14741791]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
PlanB,

вместо NULL хотите видеть 0 что ли?
Про функцию ISNULL() знаете?
22 авг 13, 14:20    [14741798]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2415
PlanB,

1) isnull
2) case
22 авг 13, 14:26    [14741855]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
PlanB
Member

Откуда: Moscow
Сообщений: 2767
нет нет, дело не в null. я не против null вместо 0. посмотрите в пример, у меня в строке null нету регномера.
т.е. сначала просто выводится голый справочник, а потом найденные значения. да и то, нулевой строки в них нет(((
22 авг 13, 14:26    [14741858]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
PlanB
Member

Откуда: Moscow
Сообщений: 2767
как вообще происходит, что у меня в строке отсутствует регномер, если есть условие типа --AND b.regn IN ('3342','1000')???
22 авг 13, 14:27    [14741866]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
Glory
Member

Откуда:
Сообщений: 104751
PlanB
т.е. сначала просто выводится голый справочник, а потом найденные значения. да и то, нулевой строки в них нет(((

Потому что поля regn нет в спровочнике
Откуда сервер возьмет для него значения, если по left join нет соответствия ?

ЗЫ
И прекратите сорить разными выдуманными вами терминами вроде "нулевая строка".
Я пониманю, что вам лень печатать лишние буквы, но не повод писать билеберду
22 авг 13, 14:30    [14741892]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
PlanB
Member

Откуда: Moscow
Сообщений: 2767
Glory
PlanB
т.е. сначала просто выводится голый справочник, а потом найденные значения. да и то, нулевой строки в них нет(((

Потому что поля regn нет в спровочнике
Откуда сервер возьмет для него значения, если по left join нет соответствия ?

ЗЫ
И прекратите сорить разными выдуманными вами терминами вроде "нулевая строка".
Я пониманю, что вам лень печатать лишние буквы, но не повод писать билеберду
ок, делать-то что? как-то по-другому запрос переписать?
22 авг 13, 14:32    [14741913]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
Glory
Member

Откуда:
Сообщений: 104751
PlanB
ок, делать-то что? как-то по-другому запрос переписать?

Логично.
22 авг 13, 14:37    [14741941]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
PlanB
Glory
пропущено...

Потому что поля regn нет в спровочнике
Откуда сервер возьмет для него значения, если по left join нет соответствия ?

ЗЫ
И прекратите сорить разными выдуманными вами терминами вроде "нулевая строка".
Я пониманю, что вам лень печатать лишние буквы, но не повод писать билеберду
ок, делать-то что? как-то по-другому запрос переписать?
Очень просто. Читаете и выполняете рекомендации форума - Рекомендации по оформлению сообщений в форуме, п.п. 4 и особенно 6
Плюс пишете Ваш запрос и желаемый результат.

В этом случае можно будет каждому у себя всё это покрутить и ответить Вам предметно.
22 авг 13, 14:39    [14741956]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
PlanB
Member

Откуда: Moscow
Сообщений: 2767
iap, похоже, что я первый день на форуме? запрос свой я не дал? пример не привел?
22 авг 13, 14:41    [14741969]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
Glory
Member

Откуда:
Сообщений: 104751
PlanB
запрос свой я не дал?

Этот запрос не может вывести NULL в b.regn
PlanB
пример не привел?

Пример чего ?
Данных в красивой рамочке ?
Для которые я должен составить скрипт создания и заполнения таблицы ?
делать вот больше нечего
22 авг 13, 14:43    [14741992]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
PlanB
iap, похоже, что я первый день на форуме? запрос свой я не дал? пример не привел?
Тогда пишите: CREATE TABLE ....
INSERT ... VALUES....
и т.д.
Влом находясь на работе, из Ваших постов названия полей вытягивать,
а типы вообще остались неизвестными.
22 авг 13, 14:44    [14741995]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
PlanB
iap, похоже, что я первый день на форуме? запрос свой я не дал? пример не привел?
В общем да, не очень внятно...

Наверное, ван тужно это:
SELECT r.regn, a.code, a.gr_5, isnull(sum(b.iitg*a.a_p), 0) as "iitg"
FROM [dbo].[gr_1] a
	JOIN (values('3342'),('1000'))as r(regn)
	LEFT JOIN [dbo].[122011b1] b
		ON a.num_sc LIKE b.num_sc
		AND b.regn = r.regn
GROUP BY r.regn, a.code, a.gr_5
ORDER BY 1, 2
22 авг 13, 14:48    [14742026]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
Правильно так:
SELECT r.regn, a.code, a.gr_5, isnull(sum(b.iitg*a.a_p), 0) as "iitg"
FROM [dbo].[gr_1] a
	CROSS JOIN (values('3342'),('1000'))as r(regn)
	LEFT JOIN [dbo].[122011b1] b
		ON a.num_sc LIKE b.num_sc
		AND b.regn = r.regn
GROUP BY r.regn, a.code, a.gr_5
ORDER BY 1, 2
22 авг 13, 14:50    [14742043]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
PlanB
Member

Откуда: Moscow
Сообщений: 2767
alexeyvg, спасибо, отлично работает. скажите, а если делать без привязки к regn? т.е. не задавать его конкретные значения, то как поступить? добавить строку "SELECT regn FROM Table" вместо "values()". или как-то еще проще?
22 авг 13, 15:00    [14742143]     Ответить | Цитировать Сообщить модератору
 Re: справочник для группировкимассива данных  [new]
Гость333
Member

Откуда:
Сообщений: 3683
PlanB
добавить строку "SELECT regn FROM Table" вместо "values()".

Да, только "SELECT DISTINCT regn FROM Table".
22 авг 13, 15:33    [14742486]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить