基于SQL的报表显示的字符数

基于SQL的报表显示的字符数,sql,sql-server,Sql,Sql Server,我正在尝试修改一个使用SQL显示健康评估的报告。关于该报告,我想增加一节,介绍健康评估中添加的意见。我可以添加评论部分,并且根据这里提供的建议,我使用子字符串将报告上显示的字符数限制为1000个,而不是8000个。 我现在遇到的问题是限制选项“Other”显示的字符数,如下所示。我在所有评估中都使用了SUBSTRING(例如:SUBSTRING(HltNutrition.Comment,1,1000)),并将营养评估作为一个示例(它工作正常)以及带有“其他”(慢性)选项的代码片段(它工作不正常)

我正在尝试修改一个使用SQL显示健康评估的报告。关于该报告,我想增加一节,介绍健康评估中添加的意见。我可以添加评论部分,并且根据这里提供的建议,我使用子字符串将报告上显示的字符数限制为1000个,而不是8000个。 我现在遇到的问题是限制选项“Other”显示的字符数,如下所示。我在所有评估中都使用了SUBSTRING(例如:SUBSTRING(HltNutrition.Comment,1,1000)),并将营养评估作为一个示例(它工作正常)以及带有“其他”(慢性)选项的代码片段(它工作不正常)。我将3替换为1,虽然这不会产生错误,但它对“Other”作为子字符串([HealthAssessName].Comment,1,1000)没有预期的效果。 感谢您的帮助。先谢谢你

  -- Nutrition
  INSERT INTO #ChronicCondition(IdApplicant, ExamDate, Condition, TreatmentNeeded, TreatmentReceived, Status, Comment)
    SELECT  #Enroll.IdApplicant,
            HltNutrition.ExamDate,
            'Nutrition',
            HltNutrition.TrtNeed,
            HltNutrition.TrtStatus,
            HltNutrition.Status,
            SUBSTRING (HltNutrition.Comment, 1, 1000)
    FROM    #Enroll
            JOIN HltNutrition ON HltNutrition.IdApplicant = #Enroll.IdApplicant
    WHERE   HltNutrition.Overweight = 1  

  -- Chronic
  INSERT INTO #ChronicCondition(IdApplicant, ExamDate, Condition, TreatmentNeeded, TreatmentReceived, Status, Comment)
    SELECT  #Enroll.IdApplicant,
            HltChronic.ExamDate,
            CASE ChronicCondition.Id
              WHEN 3 THEN 'Other' + ISNULL(' - ' + hltChronic.ConditionOther, '')
              ELSE ChronicCondition.Condition
            END,
            HltChronic.TrtNeed,
            HltChronic.TrtStatus,
            hltChronic.Status,
            SUBSTRING (HltChronic.Comment, 1, 1000)
    FROM    #Enroll 
            JOIN hltChronic ON hltChronic.idApplicant = #Enroll.idApplicant
            JOIN ChronicCondition ON ChronicCondition.Id = hltChronic.Condition

感谢您的帮助,我与高级开发人员讨论了这个问题,发现子字符串函数不是问题的原因。我遇到的问题是由于用于测试报告的数据输入。我添加的代码实际上是正确的,问题已经解决了


再次感谢您提供的帮助。

为什么不能在“其他”选项上使用子字符串函数?我相信我可以使用子字符串函数,但我想我在分配哪个参数时遇到了问题。对于所有其他评估,我使用了1(例如:HltNutrition.Comment,11000),但我认为这不是用于“其他”的正确论点。如果您查看WHEN语句(WHEN 3 THEN'Other'+ISNULL('-'+hltChronic.ConditionOther'),我认为参数应该是3,但在运行报告时没有任何效果。所以我认为可能是论点,不一定是函数。我希望这更有意义。对不起,你的回答对我来说没有多大意义。“分配哪个参数”?争论什么?对“3”的引用完全让我抓狂,因为它没有被用作论点。我怀疑你可能误用了专业术语;也许你应该试着用简单的英语或举例来解释。对于慢性评估,我有子字符串(HltChronic.Comment,11000)。但是在SELECT语句中我有这样一个条件:CASE ChronicCondition.Id当3然后'Other'+ISNULL('-'+hltChronic.ConditionOther')时,我想知道是否应该将子字符串(hltChronic.Comment,1,1000)的1更改为子字符串(hltChronic.Comment,3,1000)因为WHEN语句或另一个数字,我不相信1或3能正确识别我试图限制的字符。由于WHEN语句,我认为是3。我希望这有助于澄清。不。阅读有关子字符串的文档。我认为您不理解Substring函数的第二个参数的作用。