我有一个SQL名称表:pgcPhieuThu
我想为SoPhieu创建一个存储过程: + if参数= 0然后SoPhieu =' PT-1-> n' else参数= 1然后SoPhieu =' BC-1-> n'
ALTER proc pgcPhieuThu_TaoSoPhieu3
@HinhThuc int,@SoPhieu NVARCHAR(50) OUTPUT
as
declare @MaPT INT
SELECT @MaPT= ISNULL(SUBSTRING(MAX(pgcPhieuThu.SoPhieu),4, LEN(pgcPhieuThu.SoPhieu)),0) + 1
FROM pgcphieuthu
GROUP BY SUBSTRING(pgcPhieuThu.SoPhieu,1,3)
SET @SoPhieu = CASE WHEN @HinhThuc = 0 then 'PT-'+ CAST(@MaPT AS NVARCHAR(50))
ELSE 'BC-'+ CAST(@MaPT AS NVARCHAR(50))
但是专栏' pgcphieuthu.SoPhieu'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。
答案 0 :(得分:0)
SoPhieu不是表格中的一列。它是存储过程的参数。 所以要取代“SoPhieu'在存储过程中使用SoPhieu'它应该继续工作。