Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Хитрый Join - не могу додуматься :)  [new]
perplexed1
Member

Откуда:
Сообщений: 21
есть таблица вида:
ОСТАТОК, тип_точки, значение1
5 a -
5 a -
5 b 2
5 b 1


нужно сделать такой джойн, чтобы в новом столбце (обновленный остаток) было значение (ОСТАТОК-2-1):
5 a - 2
5 a - 2
5 b 2 2
5 b 1 2


на следующем шаге будет джойниться значение2 используя обновленный остаток

возможно ли такое без вложенного селекта с использованием SUM?
29 окт 12, 15:00    [13391394]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый Join - не могу додуматься :)  [new]
perplexed1
Member

Откуда:
Сообщений: 21
значение2 будет джойниться для типа точек 'a'
29 окт 12, 15:03    [13391417]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый Join - не могу додуматься :)  [new]
trew
Member

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

Это?
SELECT [поле1], [поле2], 2 AS dd
FROM [таблица]
29 окт 12, 15:03    [13391420]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый Join - не могу додуматься :)  [new]
trew
Member

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

SELECT [поле1], [поле2], CASE WHEN [поле2] ='a' THEN 2 ELSE NULL END AS dd
FROM [таблица]
29 окт 12, 15:04    [13391436]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый Join - не могу додуматься :)  [new]
perplexed1
Member

Откуда:
Сообщений: 21
trew, нет :)
Поставлю вопрос по другому. Возможно ли сделать
select [солбец обновленный_остаток-значение2]
from исходная_таблицы
join таблица_со_значение2
on тип_точки

обновленный остаток, конечно, должен быть вычисляем
29 окт 12, 15:09    [13391486]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый Join - не могу додуматься :)  [new]
perplexed1
Member

Откуда:
Сообщений: 21
Чувствую, что сложный вопрос задаю. Вот максимально упростил:

В первом сотлбце ОБЩИЙ остаток для всех строк. Во втором столбце каждая строка кусает от остатка.

5 -
5 -
5 2
5 1


Что нужно приджойнить к такой таблице, чтобы в новом столбце получить обновленный остаток во всех строках (2).
29 окт 12, 15:18    [13391600]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый Join - не могу додуматься :)  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3034
perplexed1
Чувствую, что сложный вопрос задаю. Вот максимально упростил:

В первом сотлбце ОБЩИЙ остаток для всех строк. Во втором столбце каждая строка кусает от остатка.

5 -
5 -
5 2
5 1


Что нужно приджойнить к такой таблице, чтобы в новом столбце получить обновленный остаток во всех строках (2).


думаю если Вы предоставите
1. скрипты таблиц
2. скрипты для их заполнения
3. ожидаемый результат для тестовых данных (с объяснением почему так)

то ....
29 окт 12, 15:25    [13391675]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый Join - не могу додуматься :)  [new]
trew
Member

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

Путанно объясняете. Приведите пример ваших арифметических действий, как что должно получаться.
29 окт 12, 15:26    [13391684]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый Join - не могу додуматься :)  [new]
perplexed1
Member

Откуда:
Сообщений: 21
я понял, что тут нужен хитрый select, а не join.

a	b
5	NULL
5	NULL
5	2
5	1


какой SELECT сделать из этой таблицы, чтобы получить в третьем столбце были только числа 3 - вычисляемые, конечно.

т.е. select a,b,хитрая_функция
и в итоге
a	b	с
5	NULL	3
5	NULL	3
5	2	3
5	1	3
29 окт 12, 15:34    [13391743]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый Join - не могу додуматься :)  [new]
Glory
Member

Откуда:
Сообщений: 104751
perplexed1
тобы получить в третьем столбце были только числа 3 - вычисляемые, конечно.

Вычисляемые из чего ?
29 окт 12, 15:36    [13391753]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый Join - не могу додуматься :)  [new]
trew
Member

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

select a,b, a+b AS хитрая_функция
FROM [таблица]
29 окт 12, 15:37    [13391756]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый Join - не могу додуматься :)  [new]
perplexed1
Member

Откуда:
Сообщений: 21
Glory,

любая строка первого столбца _минус_ сумма строк второго столбца
29 окт 12, 15:37    [13391766]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый Join - не могу додуматься :)  [new]
perplexed1
Member

Откуда:
Сообщений: 21
ой, 2 там должно получиться в данном случае :)
29 окт 12, 15:39    [13391778]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый Join - не могу додуматься :)  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3034
SELECT [поле1], [поле2], [поле1] - SUM([поле2]) OVER () AS dd
FROM [таблица]

?
29 окт 12, 15:41    [13391794]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый Join - не могу додуматься :)  [new]
perplexed1
Member

Откуда:
Сообщений: 21
даааааа)))) спасибо вам огромное, я уж думал такое невозможно без вложенного подзапроса)
29 окт 12, 15:44    [13391818]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый Join - не могу додуматься :)  [new]
perplexed1
Member

Откуда:
Сообщений: 21
можно закрывать. всем спасибо за внимание и помощь.
29 окт 12, 15:44    [13391823]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый Join - не могу додуматься :)  [new]
trew
Member

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

SELECT a, b, ABS(ISNULL(b,0) - 2) AS хитрая_функция
FROM [таблица]


HandKot
SELECT [поле1], [поле2], [поле1] - SUM([поле2]) OVER () AS dd
FROM [таблица]

а такое будет работать без группировки?
29 окт 12, 15:45    [13391828]     Ответить | Цитировать Сообщить модератору
 Re: Хитрый Join - не могу додуматься :)  [new]
perplexed1
Member

Откуда:
Сообщений: 21
trew, да - работает
29 окт 12, 15:47    [13391837]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить