SQL非硬壳语句

SQL非硬壳语句,sql,sql-server,Sql,Sql Server,我正在处理一个存储过程的问题。我有以下资料: SELECT @message = 'ID' + CAST(CASE WHEN @StoreID = 0 THEN 'BK' WHEN @StoreID = 1 THEN 'MK' END AS VARCHAR (50)) + char(13) 这会发送一封电子邮件,上面写着:ID:'MK'或ID:

我正在处理一个存储过程的问题。我有以下资料:

SELECT @message = 'ID' + CAST(CASE WHEN @StoreID = 0 THEN 'BK' 
                                   WHEN @StoreID = 1 THEN 'MK'
                                        END AS VARCHAR (50)) + char(13)
这会发送一封电子邮件,上面写着:
ID:'MK'
ID:'BK'

目前,我正在硬编码case语句,但我需要从另一个表中将字符串“
BK
MK
”拉到一起

@StoreID
来自
Store\u Orders
表。这些名称来自存储表

我尝试过的一种方法是:

SELECT @message = 'ID' + StoreName from db.Store where StoreName = StoreID and StoreID = @StoreID
当我执行代码时,它会找到正确的存储,但是

将varchar值“MK”转换为数据类型时,转换失败 内部的


但是我不想转换'MK',我想通过@StoreID查找'MK'来显示它。

您是在找这样的东西吗:

SELECT CONCAT('ID: ' , CASE WHEN s.StoreID = 0 
THEN (select '(''' + colname + ''')' 
  from othertable ot where ot.colname = s.colname) 
WHEN s.StoreID = 1 
THEN (select '(''' + colname + ''')' 
  from othertable ot where ot.colname = s.colname)
END) AS 'Message'
FROM Store_Orders s

代码没有什么意义,使用MySQL标记就更没有意义了。你真正使用的是什么数据库?请适当标记。这是一个简单的case语句,如果storeId为0,则显示以下字符串,但我需要从db表中获取它,而不是硬编码itI需要基本上将ID转换为其“name”,但我无法硬编码case语句,无论ID是什么,它都需要从表中提取-这样当我们添加更多ID时,我们就不必手动输入“BK3”或“MMK”。我提供了一个示例代码,您可以根据需要插入表名和列名。或者你可以用另一个表的DDL更新你的问题,我会相应地更新我的答案。。。但它不能转换,因为storeID是int,storename是varchar