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

Откуда:
Сообщений: 532
zero_air
Если честно не пойму что вы не поймете..

Не пойму,Как поместтить в ИЗ В поле ячейка и как корректно составтиь встроенный запрос

Но Откровенно говоря все не так.
1. Зачем вы работаете с логом по msg_id если есть log_TransactionTypeID
2. Что вам мешает использовать таблицу LV_LogStock два раза ?

В общем если я правильно понял вам нужен результат
Когда - Кто - сколько - откуда - куда

SELECT convert(varchar(10), log1.log_DateTime, 104) AS Date,
       CASE 
            WHEN lsc1.Lsc_SSCC is not null THEN lsc1.Lsc_SSCC
            ELSE '-'
       END AS SSCC,
       per1.per_LastName AS Person,
       sum(convert(int, spt1.lsp_Quantity)) AS Qty,
       ll1.loc_Code AS FromLocation,
       ll2.loc_Code AS ToLocation
FROM   lv_log log1 with (nolock)
       left JOIN LV_LogStock lsk1 with (nolock)
            ON  lsk1.lsk_LogID = log1.log_ID
            AND lsk1.lsk_OriginalLED = 1
       left JOIN LV_LogStock lsk2 with (nolock)
            ON  lsk2.lsk_LogID = log1.log_ID
            AND lsk2.lsk_OriginalLED = 0
       left JOIN LV_LogStockPackType spt1 with (nolock)
            ON  spt1.lsp_LogStockID = lsk1.lsk_ID
            AND spt1.lsp_ParentID is null
       left JOIN LV_LogStockContainer lsc1 with (nolock)
            ON  lsc1.Lsc_ID = lsk1.lsk_FromContainerID
       left JOIN LV_Location ll1 with (nolock)
            ON  ll1.loc_ID = lsk1.lsk_LocationID
       left JOIN LV_Location ll2 with (nolock)
            ON  ll2.loc_ID = lsk2.lsk_LocationID
       left JOIN LV_Session ses1 with (nolock)
            ON  ses1.ses_ID = log1.log_SessionID
       left JOIN lv_host hst1 with (nolock)
            ON  hst1.Hst_ID = ses1.ses_HostID
       left JOIN LV_Users usr1 with (nolock)
            ON  usr1.usr_ID = log1.log_UserID
       left JOIN COM_Person per1 with (nolock)
            ON  per1.per_ID = usr1.usr_PersonID
WHERE  log1.log_TransactionTypeID = 2
       AND log1.log_DateTime >= '2015-09-17 00:00:00'
       AND log1.log_DateTime <= '2015-09-17 23:59:59'
GROUP BY
       per1.per_LastName,
       lsc1.Lsc_SSCC,
       convert(varchar(10), log1.log_DateTime, 104),
       ll1.loc_Code,
       ll2.loc_Code
ORDER BY
       convert(varchar(10), log1.log_DateTime, 104) desc


Пока дает ошибку.
Сообщение 208, уровень 16, состояние 1, строка 1
Invalid object name 'lv_log'.

Но с этим разберусь
21 сен 15, 13:26    [18174967]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
Максим Александровитч
Member

Откуда:
Сообщений: 532
[quot zero_air]Если честно не пойму что вы не поймете..

Не пойму,Как поместтить в ИЗ В поле ячейка и как корректно составтиь встроенный запрос

Но Откровенно говоря все не так.
1. Зачем вы работаете с логом по msg_id если есть log_TransactionTypeID
2. Что вам мешает использовать таблицу LV_LogStock два раза ?

В общем если я правильно понял вам нужен результат
Когда - Кто - сколько - откуда - куда

да,все верно.
Я просто с этой бащой работаю очень мало.Да и скуль изучаю чуток совсем.Пытаюсь сам разобраться. Зашел просто в тупик. Про это я сам думал
ll1.loc_Code AS FromLocation,
ll2.loc_Code AS ToLocation

Только не смог реализовать. Т.е. использовать одни поля,но при разных условиях
21 сен 15, 13:28    [18174977]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
Максим Александровитч
Member

Откуда:
Сообщений: 532
Jaffar
всегда напрягало когда автор топика доходчиво не может сказать что ему нужно.
Все типа должны догадываться по кусочку говна, небрежно брошенному автором, кто же его насрал, предварительно изучив его и вкус и консистенцию своими вкусовыми рецепторам .....

Но это так к слову.


Уважаемый,Джафар.Я описал базу и принцип,Как смог. Целая портянка вверху
21 сен 15, 13:28    [18174981]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
Максим Александровитч
Member

Откуда:
Сообщений: 532
LV_LogStockContainer -это откуда.хм..
21 сен 15, 13:51    [18175121]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
zero_air
Member

Откуда:
Сообщений: 53
Максим Александровитч

Пока дает ошибку.
Сообщение 208, уровень 16, состояние 1, строка 1
Invalid object name 'lv_log'.

Но с этим разберусь

Эмм ну вот в вашем же, первом сообщении есть таблица LV_Log

LV_LogStockContainer - Хорошо опустим этот момент.

Сократим запрос. (Когда, сколько, от куда, куда)

SELECT convert(varchar(10), log1.log_DateTime, 104) AS Date,
       sum(convert(int, spt1.lsp_Quantity)) AS Qty,
       ll1.loc_Code AS FromLocation,
       ll2.loc_Code AS ToLocation
FROM   lv_log log1 with (nolock)
       left JOIN LV_LogStock lsk1 with (nolock)
            ON  lsk1.lsk_LogID = log1.log_ID
            AND lsk1.lsk_OriginalLED = 1
       left JOIN LV_LogStock lsk2 with (nolock)
            ON  lsk2.lsk_LogID = log1.log_ID
            AND lsk2.lsk_OriginalLED = 0
       left JOIN LV_LogStockPackType spt1 with (nolock)
            ON  spt1.lsp_LogStockID = lsk1.lsk_ID
            AND spt1.lsp_ParentID is null
       left JOIN LV_Location ll1 with (nolock)
            ON  ll1.loc_ID = lsk1.lsk_LocationID
       left JOIN LV_Location ll2 with (nolock)
            ON  ll2.loc_ID = lsk2.lsk_LocationID
WHERE  log1.log_TransactionTypeID = 2
       AND log1.log_DateTime >= '2015-09-17 00:00:00'
       AND log1.log_DateTime <= '2015-09-17 23:59:59'
GROUP BY
       convert(varchar(10), log1.log_DateTime, 104),
       ll1.loc_Code,
       ll2.loc_Code
ORDER BY
       convert(varchar(10), log1.log_DateTime, 104) desc


В любом случае все что вам нужно сделать это использовать таблицу LV_logStock два раза, остальное лирика.
21 сен 15, 14:25    [18175432]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
Максим Александровитч
Member

Откуда:
Сообщений: 532
zero_air
Максим Александровитч
Пока дает ошибку.
Сообщение 208, уровень 16, состояние 1, строка 1
Invalid object name 'lv_log'.

Но с этим разберусь

Эмм ну вот в вашем же, первом сообщении есть таблица LV_Log

LV_LogStockContainer - Хорошо опустим этот момент.

Сократим запрос. (Когда, сколько, от куда, куда)

SELECT convert(varchar(10), log1.log_DateTime, 104) AS Date,
       sum(convert(int, spt1.lsp_Quantity)) AS Qty,
       ll1.loc_Code AS FromLocation,
       ll2.loc_Code AS ToLocation
FROM   lv_log log1 with (nolock)
       left JOIN LV_LogStock lsk1 with (nolock)
            ON  lsk1.lsk_LogID = log1.log_ID
            AND lsk1.lsk_OriginalLED = 1
       left JOIN LV_LogStock lsk2 with (nolock)
            ON  lsk2.lsk_LogID = log1.log_ID
            AND lsk2.lsk_OriginalLED = 0
       left JOIN LV_LogStockPackType spt1 with (nolock)
            ON  spt1.lsp_LogStockID = lsk1.lsk_ID
            AND spt1.lsp_ParentID is null
       left JOIN LV_Location ll1 with (nolock)
            ON  ll1.loc_ID = lsk1.lsk_LocationID
       left JOIN LV_Location ll2 with (nolock)
            ON  ll2.loc_ID = lsk2.lsk_LocationID
WHERE  log1.log_TransactionTypeID = 2
       AND log1.log_DateTime >= '2015-09-17 00:00:00'
       AND log1.log_DateTime <= '2015-09-17 23:59:59'
GROUP BY
       convert(varchar(10), log1.log_DateTime, 104),
       ll1.loc_Code,
       ll2.loc_Code
ORDER BY
       convert(varchar(10), log1.log_DateTime, 104) desc


В любом случае все что вам нужно сделать это использовать таблицу LV_logStock два раза, остальное лирика.


Не не.это поле в таюлице есть. Вопрос,откуда Вы знает про него LV_LogStockContainer? База логистики тоже?
21 сен 15, 14:34    [18175508]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
zero_air
Member

Откуда:
Сообщений: 53
Максим Александровитч,

Был опыт интеграции с этой WMS системой.
21 сен 15, 14:36    [18175525]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
Максим Александровитч
Member

Откуда:
Сообщений: 532
zero_air
Максим Александровитч,

Был опыт интеграции с этой WMS системой.


Mantis Logistic Vision?
21 сен 15, 14:40    [18175576]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
Максим Александровитч
Member

Откуда:
Сообщений: 532
То есть ключевой момент:для того,чтобы вывести параметр lsk_OriginalLED 2-мя разными значениями(то есть 0 или 1),то нужно использовать 2 раза таблицу LV_logstock,при условии,что lsk_OriginalLED=1(1-й селект) и lsk_OriginalLED=1(2-й селект).
Просто хочу сам разобраться. У меня вся проблема была в том, что я юзал 2 раза эту таблицу,но не додумался,как вывести параметр (lsk_originalled=0)В на просмотр..
21 сен 15, 14:44    [18175607]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
zero_air
Member

Откуда:
Сообщений: 53
Максим Александровитч
zero_air
Максим Александровитч,

Был опыт интеграции с этой WMS системой.


Mantis Logistic Vision?


Совершенно верно, именно с этой WMS.
21 сен 15, 14:46    [18175619]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
Максим Александровитч
Member

Откуда:
Сообщений: 532
zero_air
Максим Александровитч
пропущено...


Mantis Logistic Vision?


Совершенно верно, именно с этой WMS.


Есть какие-ть недостатки по передаче данных из ERP в WMS и наоборот,как Вы думаете?
21 сен 15, 14:57    [18175745]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
Glory
Member

Откуда:
Сообщений: 104751
Максим Александровитч
Есть какие-ть недостатки по передаче данных из ERP в WMS и наоборот,как Вы думаете?

Для обсуждения ERP есть свой отдельный форум
21 сен 15, 14:58    [18175758]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
zero_air
Member

Откуда:
Сообщений: 53
Максим Александровитч,

Действительно, давайте не будем нарушать правила форума.
Если у вас есть какие либо конкретные вопросы касательно интеграции, я постараюсь ответить.
В другой теме в "нужной ветке форума".

P.S. Если вопрос гипотетический, то мой ответ "недостатков по передаче данных" нет. касательно конкретно этой WMS, она достаточно открыта, для того что бы воплотить любое интеграционное решение.
21 сен 15, 15:27    [18175999]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
Максим Александровитч
Member

Откуда:
Сообщений: 532
zero_air
Максим Александровитч,

Действительно, давайте не будем нарушать правила форума.
Если у вас есть какие либо конкретные вопросы касательно интеграции, я постараюсь ответить.
В другой теме в "нужной ветке форума".

P.S. Если вопрос гипотетический, то мой ответ "недостатков по передаче данных" нет. касательно конкретно этой WMS, она достаточно открыта, для того что бы воплотить любое интеграционное решение.


Я понял. Значит косяк на стороне-таки ERP.
Пытаюсь приладить часть Вашего запроса к своему. Пока ничего..
21 сен 15, 16:10    [18176257]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
zero_air
Member

Откуда:
Сообщений: 53
Максим Александровитч,

Ну, вы опишите что у вас не получается с запросом, какую ошибку возвращает сервер.
21 сен 15, 16:24    [18176371]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
Максим Александровитч
Member

Откуда:
Сообщений: 532
zero_air
Максим Александровитч,

Ну, вы опишите что у вас не получается с запросом, какую ошибку возвращает сервер.


Значит я делаю следующее. Пытаюсь использовать 2 таблицы logstock и lv_location. ничего не выдает


select top (12) a.log_DateTime as [Время],c.msg_Greek as [Операция],e.loc_Code [Ячейка],f.prd_PrimaryCode [товар],d.lsk_OriginalLED [признак],sum(cast(t.lsp_Quantity as float(6))) as [Кол-во],d.lsk_OriginalLED [ИЗ],d.lsk_OriginalLED [В]
from LV_Log a
join LV_TransactionType b on b.trt_ID = a.log_TransactionTypeID
join LV_Messages c on c.msg_code = b.trt_MessageCode
join LV_LogStock d on d.lsk_LogID = a.log_ID

join LV_Location e on e.loc_ID = d.lsk_LocationID
join LV_Product f on f.prd_ID = d.lsk_ProductID
join LV_LogStockPackType t on t.lsp_LogStockID = d.lsk_ID
join LV_LogStock d1 on d.lsk_LogID=a.log_ID
join LV_Location d2 on d2.loc_ID = d.lsk_LogID
and d.lsk_OriginalLED=1
and d1.lsk_OriginalLED=0
where c.msg_ID = 4683 and a.log_DateTime > '2015-09-18 8:26:29' and a.log_DateTime < '2015-09-18 8:26:51' and t.lsp_CUQuantity is not null



group by a.log_DateTime,c.msg_Greek,e.loc_Code,f.prd_PrimaryCode,d.lsk_OriginalLED
order by d.lsk_OriginalLED desc


Ставлю 2 условия. Originalled =1 и 0 из разных полей.
21 сен 15, 16:33    [18176432]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
Максим Александровитч
Member

Откуда:
Сообщений: 532
Теперь я хочу понять,как мне вывести 2 поля Из В, при этом их нужно приравнять к нужным значениям orginalled
21 сен 15, 16:35    [18176452]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
zero_air
Member

Откуда:
Сообщений: 53
Максим Александровитч,

Так.
По порядку.
1. Я же вам написал, как нужно.
2. JOIN LV_Location d2 ON d2.loc_ID = d.lsk_LogID AND d.lsk_OriginalLED = 1 AND d1.lsk_OriginalLED = 0 вам ничего не даст.
3. d.lsk_OriginalLED [ИЗ], d.lsk_OriginalLED [В] - не тех данных которые вы ждете. Там или 0 или 1
4. '2015-09-18 8:26:29' AND a.log_DateTime < '2015-09-18 8:26:51' - вас действительно интересуют данные за 22 секунды ?
5. d.lsk_OriginalLED [признак] - зачем вам это в селекте ?


Итог.
Забываем про непонятное поле в [признак] в селекте.
Ваш запрос должен быть таким.

SELECT top 10 
       log1.log_DateTime AS [Время],
       msg1.msg_Greek AS [Операция],
       lp.prd_PrimaryCode [товар],
       sum(convert(int, spt1.lsp_Quantity)) AS [Кол-во],
       ll1.loc_Code AS [ИЗ],
       ll2.loc_Code AS [В]
FROM   lv_log log1 with (nolock)
       left JOIN LV_LogStock lsk1 with (nolock)
            ON  lsk1.lsk_LogID = log1.log_ID
            AND lsk1.lsk_OriginalLED = 1
       left JOIN LV_LogStock lsk2 with (nolock)
            ON  lsk2.lsk_LogID = log1.log_ID
            AND lsk2.lsk_OriginalLED = 0
       left JOIN LV_LogStockPackType spt1 with (nolock)
            ON  spt1.lsp_LogStockID = lsk1.lsk_ID
            AND spt1.lsp_ParentID is null
       left JOIN LV_Location ll1 with (nolock)
            ON  ll1.loc_ID = lsk1.lsk_LocationID
       left JOIN LV_Location ll2 with (nolock)
            ON  ll2.loc_ID = lsk2.lsk_LocationID
       left JOIN LV_TransactionType trt1 with (nolock)
            ON  trt1.trt_ID = log1.log_TransactionTypeID
       left JOIN LV_Messages msg1 with (nolock)
            ON  msg1.msg_code = trt1.trt_MessageCode
            AND msg1.msg_languageID = 4
       left JOIN LV_Product lp with(nolock)
            ON  lp.prd_ID = isnull(lsk1.lsk_ProductID, lsk2.lsk_ProductID)
WHERE  
	   log1.log_TransactionTypeID=2  
	   AND log1.log_DateTime >= '2015-09-17 00:00:00'
       AND log1.log_DateTime <= '2015-09-17 23:59:59'
       AND spt1.lsp_Quantity is not null
GROUP BY
       ll1.loc_Code,
       ll2.loc_Code,
       msg1.msg_Greek,
       lp.prd_PrimaryCode,
       log1.log_DateTime
ORDER BY
       convert(varchar(10), log1.log_DateTime, 104) desc


Либо я в корне не понимаю что вы подразумевали под полями [ИЗ] и [В]
21 сен 15, 17:11    [18176727]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
Максим Александровитч
Member

Откуда:
Сообщений: 532
zero_air
Максим Александровитч,

Так.
По порядку.
1. Я же вам написал, как нужно.
2. JOIN LV_Location d2 ON d2.loc_ID = d.lsk_LogID AND d.lsk_OriginalLED = 1 AND d1.lsk_OriginalLED = 0 вам ничего не даст.
3. d.lsk_OriginalLED [ИЗ], d.lsk_OriginalLED [В] - не тех данных которые вы ждете. Там или 0 или 1
4. '2015-09-18 8:26:29' AND a.log_DateTime < '2015-09-18 8:26:51' - вас действительно интересуют данные за 22 секунды ?
5. d.lsk_OriginalLED [признак] - зачем вам это в селекте ?


Итог.
Забываем про непонятное поле в [признак] в селекте.
Ваш запрос должен быть таким.

SELECT top 10 
       log1.log_DateTime AS [Время],
       msg1.msg_Greek AS [Операция],
       lp.prd_PrimaryCode [товар],
       sum(convert(int, spt1.lsp_Quantity)) AS [Кол-во],
       ll1.loc_Code AS [ИЗ],
       ll2.loc_Code AS [В]
FROM   lv_log log1 with (nolock)
       left JOIN LV_LogStock lsk1 with (nolock)
            ON  lsk1.lsk_LogID = log1.log_ID
            AND lsk1.lsk_OriginalLED = 1
       left JOIN LV_LogStock lsk2 with (nolock)
            ON  lsk2.lsk_LogID = log1.log_ID
            AND lsk2.lsk_OriginalLED = 0
       left JOIN LV_LogStockPackType spt1 with (nolock)
            ON  spt1.lsp_LogStockID = lsk1.lsk_ID
            AND spt1.lsp_ParentID is null
       left JOIN LV_Location ll1 with (nolock)
            ON  ll1.loc_ID = lsk1.lsk_LocationID
       left JOIN LV_Location ll2 with (nolock)
            ON  ll2.loc_ID = lsk2.lsk_LocationID
       left JOIN LV_TransactionType trt1 with (nolock)
            ON  trt1.trt_ID = log1.log_TransactionTypeID
       left JOIN LV_Messages msg1 with (nolock)
            ON  msg1.msg_code = trt1.trt_MessageCode
            AND msg1.msg_languageID = 4
       left JOIN LV_Product lp with(nolock)
            ON  lp.prd_ID = isnull(lsk1.lsk_ProductID, lsk2.lsk_ProductID)
WHERE  
	   log1.log_TransactionTypeID=2  
	   AND log1.log_DateTime >= '2015-09-17 00:00:00'
       AND log1.log_DateTime <= '2015-09-17 23:59:59'
       AND spt1.lsp_Quantity is not null
GROUP BY
       ll1.loc_Code,
       ll2.loc_Code,
       msg1.msg_Greek,
       lp.prd_PrimaryCode,
       log1.log_DateTime
ORDER BY
       convert(varchar(10), log1.log_DateTime, 104) desc


Либо я в корне не понимаю что вы подразумевали под полями [ИЗ] и [В]


4. '2015-09-18 8:26:29' AND a.log_DateTime < '2015-09-18 8:26:51' - вас действительно интересуют данные за 22 секунды ?

Да,нужно за 22 секунды. В этом запросе будут еще, по меньшей мере, 10 полей. Поэтому нужны за 22 сек.
Ваш запрос отличный,он работает. Но мне нужно понять и доработать свой запрос.

5. d.lsk_OriginalLED [признак] - зачем вам это в селекте ?

попросили просто вывести его,чисто для проверки..
22 сен 15, 07:28    [18178479]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
Максим Александровитч
Member

Откуда:
Сообщений: 532
Итак. Эта связка дает вам значение одного поля при разных условиях.
left JOIN LV_LogStock lsk1 with (nolock)
ON lsk1.lsk_LogID = log1.log_ID
AND lsk1.lsk_OriginalLED = 1
left JOIN LV_LogStock lsk2 with (nolock)
ON lsk2.lsk_LogID = log1.log_ID
AND lsk2.lsk_OriginalLED = 0
При этом поле берется из одной таблицы,просто с разными алиасами.

Мне непонятно,как работает вот это
left JOIN LV_Location ll1 with (nolock)
ON ll1.loc_ID = lsk1.lsk_LocationID
left JOIN LV_Location ll2 with (nolock)
ON ll2.loc_ID = lsk2.lsk_LocationID
Ну приравняли Вы ил ячейки к ид ячейки другой таблицы..и что?
22 сен 15, 07:32    [18178482]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
Максим Александровитч
Member

Откуда:
Сообщений: 532
Выполнил Ваш запрос. В нем общее кол-во отбора из ячейки IN_M22 равно 30 шт. По,факту,в LV 15
Вот результат
SELECT top 10
log1.log_DateTime AS [Время],
msg1.msg_Greek AS [Операция],
lp.prd_PrimaryCode [товар],
sum(convert(int, spt1.lsp_Quantity)) AS [Кол-во],
ll1.loc_Code AS [ИЗ],
ll2.loc_Code AS [В]
FROM lv_log log1 with (nolock)
left JOIN LV_LogStock lsk1 with (nolock)
ON lsk1.lsk_LogID = log1.log_ID
AND lsk1.lsk_OriginalLED = 1
left JOIN LV_LogStock lsk2 with (nolock)
ON lsk2.lsk_LogID = log1.log_ID
AND lsk2.lsk_OriginalLED = 0
left JOIN LV_LogStockPackType spt1 with (nolock)
ON spt1.lsp_LogStockID = lsk1.lsk_ID
AND spt1.lsp_ParentID is null
left JOIN LV_Location ll1 with (nolock)
ON ll1.loc_ID = lsk1.lsk_LocationID
left JOIN LV_Location ll2 with (nolock)
ON ll2.loc_ID = lsk2.lsk_LocationID
left JOIN LV_TransactionType trt1 with (nolock)
ON trt1.trt_ID = log1.log_TransactionTypeID
left JOIN LV_Messages msg1 with (nolock)
ON msg1.msg_code = trt1.trt_MessageCode
AND msg1.msg_languageID = 4
left JOIN LV_Product lp with(nolock)
ON lp.prd_ID = isnull(lsk1.lsk_ProductID, lsk2.lsk_ProductID)
WHERE
log1.log_TransactionTypeID=2
AND log1.log_DateTime >= '2015-09-18 08:26:29'
AND log1.log_DateTime <= '2015-09-18 08:26:51'
AND spt1.lsp_Quantity is not null

GROUP BY
ll1.loc_Code,
ll2.loc_Code,
msg1.msg_Greek,
lp.prd_PrimaryCode,
log1.log_DateTime
ORDER BY
convert(varchar(10), log1.log_DateTime, 104) desc

Время Операция Товар Кол-во Из В
18.09.2015 8:26 Размещение 219997 -30 IN_M22 30-70-01

Мой запрос и результат

select top (12) a.log_DateTime as [Время],c.msg_Greek as [Операция],e.loc_Code [Ячейка],f.prd_PrimaryCode [товар],d.lsk_OriginalLED [признак],sum(cast(t.lsp_Quantity as float(6))) as [Кол-во],d.lsk_OriginalLED [ИЗ],d.lsk_OriginalLED [В]
from LV_Log a
join LV_TransactionType b on b.trt_ID = a.log_TransactionTypeID
join LV_Messages c on c.msg_code = b.trt_MessageCode
join LV_LogStock d on d.lsk_LogID = a.log_ID

join LV_Location e on e.loc_ID = d.lsk_LocationID
join LV_Product f on f.prd_ID = d.lsk_ProductID
join LV_LogStockPackType t on t.lsp_LogStockID = d.lsk_ID

where c.msg_ID = 4683 and a.log_DateTime > '2015-09-18 8:26:29' and a.log_DateTime < '2015-09-18 8:26:51' and t.lsp_CUQuantity is not null



group by a.log_DateTime,c.msg_Greek,e.loc_Code,f.prd_PrimaryCode,d.lsk_OriginalLED
order by d.lsk_OriginalLED desc

Время Операция Ячейка товар признак Кол-во ИЗ В
18.09.2015 8:26 Размещение IN_M22 219997 1 -15 1 1
18.09.2015 8:26 Размещение 30-70-01 219997 0 15 0 0
22 сен 15, 08:16    [18178528]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
Максим Александровитч
Member

Откуда:
Сообщений: 532
Вот последний мой запрос
select top (12) a.log_DateTime as [Время],c.msg_Greek as [Операция],e.loc_Code [Ячейка],f.prd_PrimaryCode [товар],sum(cast(t.lsp_Quantity as float(6))) as [Кол-во],e.loc_Code [ИЗ],e1.loc_Code [В]
from LV_Log a
join LV_TransactionType b on b.trt_ID = a.log_TransactionTypeID
join LV_Messages c on c.msg_code = b.trt_MessageCode
join LV_LogStock d on d.lsk_LogID = a.log_ID
and d.lsk_OriginalLED = 1
join LV_Location e on e.loc_ID = d.lsk_LocationID
join LV_LogStock d1 on d1.lsk_LogID = a.log_ID
and d1.lsk_OriginalLED = 0
join LV_Product f on f.prd_ID = d.lsk_ProductID
join LV_LogStockPackType t on t.lsp_LogStockID = d.lsk_ID
join LV_Location e1 on e1.loc_ID = d1.lsk_LocationID

where c.msg_ID = 4683 and a.log_DateTime > '2015-09-18 8:26:29' and a.log_DateTime < '2015-09-18 8:26:51' and t.lsp_CUQuantity is not null
and c.msg_languageID = 4


group by a.log_DateTime,c.msg_Greek,e.loc_Code,f.prd_PrimaryCode,e.loc_Code,e1.loc_Code
order by a.log_DateTime desc



Выдает норм,кроме того,что кол-во в 2 раза больше нужного
Время Операция Ячейка товар Кол-во ИЗ В
18.09.2015 8:26 Размещение IN_M22 219997 -30 IN_M22 30-70-01
22 сен 15, 08:34    [18178567]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
Максим Александровитч
Member

Откуда:
Сообщений: 532
Так,удваивает я понял почему. Из-за sum(cast(t.lsp_Quantity as float(6))) суммы.
Новый вопрос:
как вывести чисто убыток из ячейки IN_M22 -15? Получается,что скуль плюсует убыток и приход в ячейку
22 сен 15, 11:17    [18179352]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
zero_air
Member

Откуда:
Сообщений: 53
Максим Александровитч,

Мне кажется вы ошибаетесь в операциях.
Выше вы написали "В нем общее кол-во отбора из ячейки"
Но в своих запросах вы указываете операцию "размещение".
Как итог, я даже развернул какой то бэкап
и проверил то что вы написали, ни каких "задвоений" нет.

К сообщению приложен файл. Размер - 72Kb
22 сен 15, 11:39    [18179457]     Ответить | Цитировать Сообщить модератору
 Re: Представление таблицы в виде строки  [new]
Максим Александровитч
Member

Откуда:
Сообщений: 532
Да, я немного изменил Ваш запрос.
Попробуйте с моим поработать
select top (12) a.log_DateTime as [Время],c.msg_Greek as [Операция],e.loc_Code [Ячейка],f.prd_PrimaryCode [товар],sum(cast(t.lsp_Quantity as float(6))) as [Кол-во],e.loc_Code [ИЗ],e1.loc_Code [В]
from LV_Log a
join LV_TransactionType b on b.trt_ID = a.log_TransactionTypeID
join LV_Messages c on c.msg_code = b.trt_MessageCode
join LV_LogStock d on d.lsk_LogID = a.log_ID
and d.lsk_OriginalLED = 1
join LV_Location e on e.loc_ID = d.lsk_LocationID
join LV_LogStock d1 on d1.lsk_LogID = a.log_ID
and d1.lsk_OriginalLED = 0
join LV_Product f on f.prd_ID = d.lsk_ProductID
join LV_LogStockPackType t on t.lsp_LogStockID = d.lsk_ID
join LV_Location e1 on e1.loc_ID = d1.lsk_LocationID

where c.msg_ID = 4683 and a.log_DateTime > '2015-09-18 8:26:29' and a.log_DateTime < '2015-09-18 8:26:51' and t.lsp_CUQuantity is not null
and c.msg_languageID = 4


group by a.log_DateTime,c.msg_Greek,e.loc_Code,f.prd_PrimaryCode,e.loc_Code,e1.loc_Code
order by a.log_DateTime desc

и да, я перепутал операции. Putting Нужно
22 сен 15, 11:51    [18179546]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить