01.02.2023, 17:47 | #1 |
Участник
|
Хранимка, INSERT INTO ..SELECT (с GROUP by!!!), значение Line No
Всем добрый день!
1.Выгрузка для маркетплейса из выделенных в списке перемещений. Заказчик хочет группировку товаров по артикулу+цвету. Данные беру хранимкой и пишу в таблицу, в которой первичный ключ Document Type,Document No.,Line No_. Не могу корректно определить Line No_ в строке. Вот так ругается при выгрузке Violation of PRIMARY KEY constraint 'ххх$Export Documents$0'. Cannot insert duplicate key in object 'dbo.ххх$Export Documents'. 2.Сделала вот такую фн: USE [ххх] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <ххх> -- Create date: <2023-01-26, ,> -- Description: <нужна в хп [dbo].[rnd_export22y_transfer_group], где строки перемещ групп по артик товара+цвет и запись в т 50124 с ключом ... Строка Но> -- #SC-хх 2023-01-16 Выгрузка -- ============================================= ALTER FUNCTION [dbo].[GetLineNo] ( @LastLineNo int ) RETURNS int AS BEGIN RETURN (@LastLineNo + 10000) END в хп SET @line = 10000 Дальше надо как-то @line впихнуть в конструкцию INSERT INTO [ххх].[dbo].[ххх$Export Documents] ([Document Type] ,[Document No_] ...... SELECT @Type --(<Document Type, int,> ,@docGroup --docNo--<Document No_, varchar(30),> ,1--<State, int,> ,sl.[Shipment Date]--<DateTime, datetime,> ,sl.[Document No_]--<Vender, varchar(100),> .......... Что-то типа , @line = (select [dbo].[GetLineNo] (@line) ) чтобы и @line увеличилось, и в новую запись пошло увеличенное значение. Не получается использовать фн [dbo].[GetLineNo] ! ((((( 3. Я извернулась вот так: , (SELECT top 1 FLOOR(RAND(ART2.[Qty])*(ART2.[Line No_]))+ FLOOR(RAND(ART2.[Line No_])*(ART2.[Qty]))) [Line No] ART2.[Line No_] при группировке сумм по всем лайнам))) а ART2.[Qty] - по всем количествам в строках Пока работает. Может, кто-то решал подобную задачу, и может поделиться опытом? Спасибо! Последний раз редактировалось mira; 01.02.2023 в 17:54. |
|
|
|