2012-08-08 64 views
0

我目前有一个Storedproc t hat正在返回值,以便在asp.net中绑定一个gridview。我想要做的一件事是将两个字段合并为一个,但我似乎无法使其工作。添加分隔线

这里是我的存储过程

DECLARE @SQL VARCHAR(MAX); 

BEGIN 
SET @SQL = N'SELECT SYSTEM AS ''System'' 
      , ENTN AS ''Entity'' 
      , MED_CTR AS ''Medical Center'' 
      , MED_CTR_LEVEL AS ''Medical Center Level'' 
      , DEPT_ID AS ''Department ID'' 
    FROM V_ROLLUP_SYSTEM_DESC_REV1 
    WHERE (DEPT_ID = '+CONVERT(VARCHAR,@DEPTCODE)+') 
     AND SYSTEM IN ('[email protected]+')' 
PRINT(@SQL) 
EXEC(@SQL) 

所以我想MED_CTR与MED_CTR_LEVEL由“/”分隔,并标记为医疗中心/水平结合起来。我似乎不能将它结合到目前为止,因为我尝试在其中添加“/”的每种方法都没有给我返回任何内容。

回答

1

这应该工作:

SET @SQL = N'SELECT SYSTEM AS [System] 
      , ENTN AS [Entity] 
      , (MED_CTR +''/''+ MED_CTR_LEVEL) as [Medical Center/ Level] 
      , DEPT_ID AS [Department ID] 
    FROM V_ROLLUP_SYSTEM_DESC_REV1 
    WHERE (DEPT_ID = '+CONVERT(VARCHAR,@DEPTCODE)+') 
     AND SYSTEM IN ('[email protected]+')' 

如果你想确保2列CONCAT总是成功,你可以这样做:

SET @SQL = N'SELECT SYSTEM AS [System] 
      , ENTN AS [Entity] 
      , ISNULL(MED_CTR,''N/A'') +''/''+ ISNULL(MED_CTR_LEVEL,''N/A'')) as [Medical Center/ Level] 
      , DEPT_ID AS [Department ID] 
    FROM V_ROLLUP_SYSTEM_DESC_REV1 
    WHERE (DEPT_ID = '+CONVERT(VARCHAR,@DEPTCODE)+') 
     AND SYSTEM IN ('[email protected]+')' 
+0

感谢您的建议,但它不做我想做的事情。这给了MEDY的结果,而不是MED/Y或MED/Y – user1512593 2012-08-08 17:21:14

+0

@ user1512593我更新了我的答案。 – Icarus 2012-08-08 17:24:45

+0

谢谢你的工作。第二个是什么意思? – user1512593 2012-08-08 17:54:10