Ich verwende STUFF-Funktion, um mehrere Zeilenwerte zu einer Spalte abzurufen.Entfernen Sie zusätzliches Delimeter aus den Datensätzen
ALTER PROCEDURE [dbo].[PrintOutlettoOutletTransfer]
@TransferCode varchar(20),
@token nvarchar(50)
AS
BEGIN
DECLARE @Isprint AS int
DECLARE @user AS VARCHAR(50)
DECLARE @PcIp AS VARCHAR(50)
DECLARE @PcName AS VARCHAR(50)
DECLARE @AditUserName AS VARCHAR(100)
DECLARE @outlet AS VARCHAR(100)
DECLARE @ServerName AS VARCHAR(200)
SET @user = ''
-- Retrive data from user login history from Tocken
SELECT
@user = UserLogInHistory.UserId,
@PcIp = LogInIp,
@outlet=OutletCode,
@ServerName = ServerId,
@AditUserName = Users.UserFullName
from UserLogInHistory
inner join Users on Users.UserId = UserLogInHistory.UserId
where UserTokenId = @token;
SELECT
ISNULL(InventoryTransferHeader.TransferCode,'') AS 'TransferId',
ISNULL(InventoryTransferHeader.TransferDate,'') AS 'TransferDate',
ISNULL(InventoryTransferLine.ItemCode,'') AS 'ItemCode',
ISNULL(InventoryTransferLine.ItemDescription,'') AS 'ItemDescription',
ISNULL(InventoryTransferLine.Qty,'') AS 'Qty',
STUFF((SELECT InventoryTransferSerials.SerialNo + '/'
FROM InventoryTransferSerials
WHERE InventoryTransferSerials.ItemCode = InventoryTransferLine.ItemCode
AND InventoryTransferSerials.TransferCode = InventoryTransferHeader.TransferCode
FOR XML PATH('')),1,1,'') AS 'SN',
ISNULL(InventoryStatus.Description,'') AS 'InventoryStatus',
ISNULL(InventoryTransferHeader.FromOutlet,'') AS 'outletFrom' ,
ISNULL(F.OutletDesc,'') AS 'fromOutletsDesc',
ISNULL(InventoryTransferHeader.TOOutlet,'') AS 'outletTO' ,
ISNULL(T.OutletDesc,'') AS 'toOutletsDesc'
FROM InventoryTransferHeader
INNER JOIN
Outlets F ON InventoryTransferHeader.FromOutlet = F.OutletCode
INNER JOIN
Outlets T ON InventoryTransferHeader.ToOutlet = T.OutletCode
LEFT OUTER JOIN
InventoryStatus on InventoryStatus.StatusCode = InventoryTransferHeader.InventoryStatus
LEFT OUTER JOIN
InventoryTransferLine ON InventoryTransferLine.TransferCode = InventoryTransferHeader.TransferCode
WHERE (InventoryTransferHeader.TransferCode = @TransferCode OR @TransferCode = '') AND (InventoryStatus.StatusCode = 1 OR InventoryStatus.StatusCode = 2)
--- Insert Values to Audit table
INSERT INTO PrintHistory
([DocType],[Reference],[AuditOutlet],[AuditUser],[AuditDate],[AuditType],[AuditIp],[AuditPc],[AuditUserName])
values
('OutletToOutletInventoryTransfer',@TransferCode,@outlet,@user,GETDATE(),'1',@PcIp,@ServerName,@AditUserName);
UPDATE InventoryTransferHeader
SET InventoryTransferHeader.[Print] = 1,
InventoryTransferHeader.[PrintUser] = @user,
InventoryTransferHeader.[PrintDate] = GETDATE()
WHERE InventoryTransferHeader.TransferCode = @TransferCode AND InventoryTransferHeader.[Print] = 0;
END
Es gibt eine Ausgabe wie folgt.
0000227/10000228/10000229/10000230/10000231/
Ich mag die zusätzlichen "/" von Aufzeichnungen entfernen.
Bitte helfen.
Was genau sind die zusätzlichen Vorwärtsschrägstriche? –
"/" am Ende. –