|
v7: Одинаковые ТЧ дока запросом SQL | ☑ | ||
---|---|---|---|---|
0
monsterZE
06.06.14
✎
12:01
|
Народ, подскажите как выцепить сабж =)
Скажем, если в тч всего три реквизита товар, колво и сумма. |
|||
1
monsterZE
06.06.14
✎
12:03
|
пока тока вот такое вот родилось =)
--- просто по суммам и паре реквизитов сворачивает ТекстЗапроса = " |SELECT | $Док.Сумма as СуммаДок | ,COUNT(*) as Одинак |FROM | _1SJourn as Жур (NOLOCK) |INNER JOIN | $Документ.РасходнаяНал as Док (NOLOCK) ON Док.IDDoc = Жур.IDDoc %ОтборПоСкладу% %ОтборПоКлиенту% | AND $Док.ПризнакНакладной = $Перечисление.ПризнРасхНакл.Продажа |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНал | AND Жур.Closed & 1 = 1 |GROUP BY | $Док.Сумма, $Док.Категория, $Док.Вид |HAVING COUNT(*)>1 |"; |
|||
2
Ёпрст
06.06.14
✎
12:03
|
очень сильное шаманство, используя INTERSECT
|
|||
3
monsterZE
06.06.14
✎
12:04
|
(2) короче это гемор =)
|
|||
4
Ёпрст
06.06.14
✎
12:16
|
(3) почему ?
Обычное пересечение .. Можно еще и ранжирующими функциями делать |
|||
5
Ёпрст
06.06.14
✎
12:17
|
ну или вообще примитив, тупо через соединение
|
|||
6
МихаилМ
06.06.14
✎
12:35
|
задача поставленна некорректно т.к. не описано условие повторения строк в тч
|
|||
7
monsterZE
06.06.14
✎
13:26
|
(6) непонял что за "условие повторения строк"?
ты про Док1 - товар1, товар2 Док2 - товар2, товар1 ? вобще, конечно, такое надо решать по другому =) вопрос из спортивного интереса.. (4)(5) пересечение чего с чем? есть, например, полная табличка с ИдДок, Товар ее надо отсортировать по ИдДок, Товар из нее надо выкусить ТЧ перевого ИдДок и искать соответствие в основной, кроме него самого =) и так далее.. интерсект возвращает различия в двух табличках как сие мне может помочь? |
|||
8
Ёпрст
06.06.14
✎
13:29
|
(7) а тебе что надо , для начала ?
интерсект в подзапрос + условие на exists и усё.. |
|||
9
monsterZE
06.06.14
✎
13:32
|
(8) найти документы с одинаковой табличной частью
|
|||
10
Ёпрст
06.06.14
✎
14:01
|
(9) of rbye ghbvbnbdysq ghbvth
|
|||
11
Ёпрст
06.06.14
✎
14:18
|
типа того:
select Жур.iddoc [док $Документ.Реализация] from _1sjourn Жур (nolock) inner join _1sjourn Жур2(nolock)on Жур.iddoc<> Жур2.iddoc and Жур2.iddocdef = $ВидДокумента.реализация and not exists(select $Док.Номенклатура,$Док.Количество from $ДокументСтроки.Реализация Док (nolock) where Док.iddoc = Жур.iddoc EXCEPT select $Док2.Номенклатура,$Док2.Количество from $ДокументСтроки.Реализация Док2 (nolock) where Док2.iddoc = Жур2.iddoc ) where Жур.iddocdef = $ВидДокумента.реализация |
|||
12
Ёпрст
06.06.14
✎
14:21
|
+11 только там надо еще одно условие на EXCEPT в другую сторону..
|
|||
13
Ёпрст
06.06.14
✎
14:22
|
+12 доки местами поменять, короче..
|
|||
14
Ёпрст
06.06.14
✎
14:27
|
короче, так
select Жур.iddoc [док $Документ.Реализация] ,Жур2.iddoc [дубель $Документ.Реализация] from _1sjourn Жур (nolock) inner join _1sjourn Жур2(nolock)on Жур.iddoc<> Жур2.iddoc and Жур2.iddocdef = $ВидДокумента.реализация and not exists(select $Док.Номенклатура,$Док.Количество from $ДокументСтроки.Реализация Док (nolock) where Док.iddoc = Жур.iddoc EXCEPT select $Док2.Номенклатура,$Док2.Количество from $ДокументСтроки.Реализация Док2 (nolock) where Док2.iddoc = Жур2.iddoc ) and not exists(select $Док.Номенклатура,$Док.Количество from $ДокументСтроки.Реализация Док (nolock) where Док.iddoc = Жур2.iddoc EXCEPT select $Док2.Номенклатура,$Док2.Количество from $ДокументСтроки.Реализация Док2 (nolock) where Док2.iddoc = Жур.iddoc ) where Жур.iddocdef = $ВидДокумента.реализация |
|||
15
Ёпрст
06.06.14
✎
14:28
|
ну там, свои колонки сам в запрос запихаешь (а не только товар и количество, короче, че хошь, то и пихай :) )
|
|||
16
Ёпрст
06.06.14
✎
14:30
|
ну и это.. от "парных" записях, ты уж как-нить сам ..сам .. избавляйся :)
Это те которые будут Док Дубль Док1 Док2 ..... Док2 Док1 |
|||
17
monsterZE
06.06.14
✎
15:18
|
(16) угу, пасиб, ща буду ковырять =)
|
|||
18
Ёпрст
06.06.14
✎
15:20
|
ну и это, табличные части доков, можешь еще "свернуть" в запросе, если надо (мало ли там, одинаковые товары валяются..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |