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

Откуда:
Сообщений: 48


К сообщению приложен файл. Размер - 55Kb
10 дек 14, 10:21    [16975779]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
o-o
Guest
qsc,

извиняюсь, ответ мне был на картинке, а я код смотрю, с телефона гадко видно, щас доеду, на норм. мониторе посмотрю
10 дек 14, 10:28    [16975811]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
select t.DATE,t.SHIFT,tt.REC_EQUIP_420,tt.ELAPSED_HOURS
from Calendar_KTG t
left join MSF420_HOURS tt on t.DATE=tt.REV_STAT_DATE and t.SHIFT=tt.SHIFT  and tt.REC_EQUIP_420='E000000002421'
10 дек 14, 10:42    [16975897]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31964
qsc
в любом случае, там значений null нет
Условие tt.REC_EQUIP_420='E000000002421' превращает соединение LEFT OUTER JOIN в соединение INNER JOIN, отфильтровывает вывод значений tt, которые NULL, то есть отсутствуют.
Вот поэтому вы их и не видите.

Нужно запрос
select t.DATE,t.SHIFT,tt.REC_EQUIP_420,tt.ELAPSED_HOURS
from Calendar_KTG t
    left join MSF420_HOURS tt on t.DATE=tt.REV_STAT_DATE and t.SHIFT=tt.SHIFT
where t.DATE='20141101' and tt.REC_EQUIP_420='E000000002421'

заменить на
select t.DATE,t.SHIFT,tt.REC_EQUIP_420,tt.ELAPSED_HOURS
from Calendar_KTG t
    left join MSF420_HOURS tt 
        on t.DATE=tt.REV_STAT_DATE 
        and t.SHIFT=tt.SHIFT 
        and tt.REC_EQUIP_420='E000000002421'
where t.DATE='20141101' 
10 дек 14, 10:43    [16975906]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
o-o
Guest
alexeyvg,

Нет, она вывесила подтверждающую картинку, все честно, это просто все сразу в код смотрят, но картинка зачетная
10 дек 14, 10:51    [16975947]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
qsc
Member

Откуда:
Сообщений: 48
alexeyvg,
запрос в таком виде дает то, что надо, однако, когда убираем это условие по номеру оборудования, в общем селекте нулевые значения снова отваливаются. Если проследить за оборудованием 2421, значение появляется только для 2-ой смены.

К сообщению приложен файл. Размер - 113Kb
10 дек 14, 11:13    [16976090]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
qsc
значение появляется только для 2-ой смены.

Картинка с другого сайта.

order by t.DATE,t.SHIFT,tt.REC_EQUIP_420
10 дек 14, 11:17    [16976125]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
o-o
Guest
OFF
"счастливые" обладатели русифицированных студий, а скажите, плиз, это что,
оно прадва так пишет "Не NULL" или это fake?
как-то непоследовательно: "NOT" так мы переведем, а "NULL" оставим
...а когда скрипт создания таблицы из студии мышью просите, оно в скрипте тоже так же пишет:
SHIFT char(2) Не NULL?

К сообщению приложен файл. Размер - 25Kb
10 дек 14, 11:18    [16976128]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
o-o
OFF
"счастливые" обладатели русифицированных студий, а скажите, плиз, это что,
оно прадва так пишет "Не NULL" или это fake?
как-то непоследовательно: "NOT" так мы переведем, а "NULL" оставим
...а когда скрипт создания таблицы из студии мышью просите, оно в скрипте тоже так же пишет:
SHIFT char(2) Не NULL?

Картинка с другого сайта.


круто =)
+1 к вопросу
10 дек 14, 11:20    [16976146]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
qsc
Member

Откуда:
Сообщений: 48
Glory,
то же самое
10 дек 14, 11:21    [16976152]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
qsc
Member

Откуда:
Сообщений: 48
o-o,

К сообщению приложен файл. Размер - 6Kb
10 дек 14, 11:23    [16976172]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
o-o
Guest
to qsc,
это не на Вас наезд был про NULLы, это у меня неравнодушие к "русификации насквозь", не переживайте

to ALL:
a объясните, плиз, тормозящим с утра:
почему не одно и то же в результате выполнения вот этих двух запросов:
select t.DATE,t.SHIFT,tt.REC_EQUIP_420,tt.ELAPSED_HOURS
from @t t
    left join @tt tt on t.DATE=tt.REV_STAT_DATE and t.SHIFT=tt.SHIFT
where t.DATE='20141101' and (tt.REC_EQUIP_420='E000000002421' or tt.REC_EQUIP_420 is null)

select t.DATE,t.SHIFT,tt.REC_EQUIP_420,tt.ELAPSED_HOURS
from @t t
    left join @tt tt 
        on t.DATE=tt.REV_STAT_DATE 
        and t.SHIFT=tt.SHIFT 
        and tt.REC_EQUIP_420='E000000002421'
where t.DATE='20141101' 


я вижу 2 картинки, где их результаты различны.
но не могу воспроизвести.
первый запрос не переделывает left в inner, или я совсем уже сегодня?
10 дек 14, 11:31    [16976220]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
ну так в случае WHERE там в INNER JOIN трансформируется выражение
10 дек 14, 11:33    [16976229]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
o-o
Guest
Konst_One,

почему???
там же условие в WHERE и NULL-ы проверяет:
where t.DATE='20141101' and (tt.REC_EQUIP_420='E000000002421' or tt.REC_EQUIP_420 is null)

я может вообще хочу найти как раз те, что NULL-ы.
уберу вот так:
where t.DATE='20141101' and (tt.REC_EQUIP_420 is null)

и получу не нашедшие свои пары в правой таблице.
не превращая LEFT в INNER
10 дек 14, 11:46    [16976347]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
забыл пароль
Guest
o-o
OFF
"счастливые" обладатели русифицированных студий, а скажите, плиз, это что,
оно прадва так пишет "Не NULL" или это fake?
как-то непоследовательно: "NOT" так мы переведем, а "NULL" оставим
...а когда скрипт создания таблицы из студии мышью просите, оно в скрипте тоже так же пишет:
SHIFT char(2) Не NULL?


да, отображает так, скрипты правильно формирует
10 дек 14, 12:06    [16976518]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
o-o
Guest
забыл пароль,
спсб.
ну, тогда они сами себе насмешка.
уж что смогли -- перевели. остальное, видимо, не осилили, и слава богу на том спасибо.
что б мы без их перевода делали
10 дек 14, 12:15    [16976578]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31964
qsc
alexeyvg,
запрос в таком виде дает то, что надо, однако, когда убираем это условие по номеру оборудования, в общем селекте нулевые значения снова отваливаются. Если проследить за оборудованием 2421, значение появляется только для 2-ой смены.
Дык я вам сразу написал, что у вас сортировка неправильная. Вы точно внимательно просмотрели все записи на экране, или соседние глянули?
10 дек 14, 15:41    [16978236]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31964
qsc
Glory,
то же самое
Вы показывайте, показывайте. Запрос + результат. Результат можно и в виде таблицы, если это проще, необязательно скрины делать.

И повторю, показывайте и анализируйте все результаты. Допустим, будет там код 'E000000002421', только с русской буквы Е?
10 дек 14, 15:48    [16978299]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
там ещё тонкий вопрос с Shift , в одной табличке float, а в другой char(2)
10 дек 14, 15:50    [16978311]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31964
alexeyvg
qsc
alexeyvg,
запрос в таком виде дает то, что надо, однако, когда убираем это условие по номеру оборудования, в общем селекте нулевые значения снова отваливаются. Если проследить за оборудованием 2421, значение появляется только для 2-ой смены.
Дык я вам сразу написал, что у вас сортировка неправильная. Вы точно внимательно просмотрели все записи на экране, или соседние глянули?
Тьфу, голову заморочили со своим запросом :-)

Всё правильно показывает. Для каждой строки даты и Shift есть значения, откуда ещё енули должны быть?

Нужно собственно с желаемым результатом определиться.

Когда будете делать динамический PIVOT, у вас и будут NULL на месте соотв. ячеек.
10 дек 14, 16:02    [16978417]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31964
alexeyvg
Когда будете делать динамический PIVOT, у вас и будут NULL на месте соотв. ячеек
Вот, попробуйте:
select SHIFT, REC_EQUIP_420, [20141101] [20141102], [20141103]
from (
select t.DATE, t.SHIFT, tt.REC_EQUIP_420, tt.ELAPSED_HOURS
from Calendar_KTG t
    left join MSF420_HOURS tt 
        on t.DATE=tt.REV_STAT_DATE 
        and t.SHIFT=tt.SHIFT 
where t.DATE in ('20141101', '20141102', '20141103' )
) t
PIVOT
(
    SUM (ELAPSED_HOURS) FOR DATE IN ([20141101] [20141102], [20141103])
) AS pvtValue
order by REC_EQUIP_420, SHIFT
10 дек 14, 16:09    [16978463]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
qsc
Member

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

как видите, нет значений за 1-ое число для 2421

К сообщению приложен файл. Размер - 57Kb
10 дек 14, 16:34    [16978673]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
qsc
Member

Откуда:
Сообщений: 48
alexeyvg
qsc
Glory,
то же самое
Вы показывайте, показывайте. Запрос + результат. Результат можно и в виде таблицы, если это проще, необязательно скрины делать.

И повторю, показывайте и анализируйте все результаты. Допустим, будет там код 'E000000002421', только с русской буквы Е?


оборудование содержит в имени английскую Е,восемь нолей и четырехзначный код
10 дек 14, 16:36    [16978698]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
qsc
Member

Откуда:
Сообщений: 48
[quot alexeyvg]
alexeyvg
пропущено...

Всё правильно показывает. Для каждой строки даты и Shift есть значения, откуда ещё енули должны быть?

Нужно собственно с желаемым результатом определиться.


С результатом как раз ясно. Нужна кросс-таблица, в которой по вертикали будет идти оборудование и смены, а по горизонтали - даты. Наработка на оборудование вносится не каждый день, и если я не заполняю нулями отсутствующие данные, я теряю их в итоговой таблице.
10 дек 14, 16:44    [16978770]     Ответить | Цитировать Сообщить модератору
 Re: трансформация таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31964
qsc
как видите, нет значений за 1-ое число для 2421
Я вижу, что в запросе 5 столбцов, а на экране 4. Так не бывает

То есть 1-го числа вообще нет, не только для 2421
10 дек 14, 21:03    [16980281]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить