我正在使用STUFF函数来检索列的多个行值。
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
它提供如下输出。
0000227/10000228/10000229/10000230/10000231/
我想从记录中删除附加的“/”。
请帮忙。
答案 0 :(得分:1)
最后删除单个尾随正斜杠的一个选项是将当前SELECT
包装在子查询中并使用LEFT
:
SELECT LEFT(t.SN, LEN(t.SN) - 1)
FROM
(
SELECT STUFF((SELECT InventoryTransferSerials.SerialNo + ' /'
FROM InventoryTransferSerials
WHERE InventoryTransferSerials.ItemCode =
InventoryTransferLine.ItemCode AND
InventoryTransferSerials.TransferCode =
InventoryTransferHeader.TransferCode
FOR XML PATH('')), 1, 1, '') AS SN
FROM yourTable
) t