'How to concatenate 2 numbers using dot using T-SQL?

I have a EmployeeAudit table like below :

Id      EmployeeId      
1       100
2       101

I have a 2 below variable:

DECLARE @Version INT = 10;
DECLARE @isAuditDone BIT = 0;
//logic to populate Version and isAuditDone

Based on above variable, I want to check if Audit is done then I want to return Id from EmployeeAudit like below :

if @isAuditDone
    return Id + '.' + Version = 1.10
else 
    return Id

Query:

select 
    (CASE
          WHEN @isAuditDone = 1
                THEN E.Id + '.' + @Version
          WHEN @isAuditDone = 0
                THEN E.Id
          ELSE 
                E.Id
          END) AS Id, 
          EmployeeId
    from 
    EmployeeAudit E

But I am getting below error:

Conversion failed when converting the varchar value '.' to data type int.

Can someone please help?

Update :

EXEC [dbo].[GetEmployeeAuditJson] @employeeId = 101

SP return type on select statement:

FOR JSON PATH, WITHOUT_ARRAY_WRAPPER, INCLUDE_NULL_VALUES;


Solution 1:[1]

If you want to return something other than integer value from Stored Procedure then you need to use Output column. So in your case you have to return String as you have a Dot to append with number. This is a demo stored procedure definition you can try using to fulfil what you desire.

CREATE PROCEDURE  SProc
@Id varchar(500) OUTPUT
AS 
select 
    (CASE
          WHEN @isAuditDone = 1
                THEN concat(E.Id,'.',@Version)
          WHEN @isAuditDone = 0
                THEN concat('',E.Id)   
          ELSE 
                concat('',E.Id)       
          END) AS Id, 
          EmployeeId
    from 
    EmployeeAudit E

You can then execute your stored proc like this with output parameter.

Declare @Id varchar(500)
EXEC SProc  @Id  OUTPUT

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 ishant kaushik