我有下表:



以及以下代码:

    select
        de.ApprovalOrder + de. EntityCode + isnull(de.ProjectCode, '') as 'RowID'
    from workflow.delegation_engine de
    where EntityCode = 1415 and DelegationCode = 'CAT1'

不幸的是,这返回了一个累加结果。我知道这是上面给出的它应该做的但是我怎样才能让它将每一列的结果连接成一个结果,同时也只包括 de.ProjectCode 当结果不是 NULL (这可以是字符或整数值) .

例如,如果我只在该表的第一行运行查询,我希望返回的结果为“11415”。

最佳答案

为了明确说明您在做什么,我首先将每个项目转换为 VARCHAR()。

CAST(de.ApprovalOrder AS VARCHAR(16)) + CAST(de.EntityCode AS VARHCAR(16)) + ISNULL(CAST(de.ProjectCode AS VARCHAR(16)), '')

如果你想要一个 hack 来避免显式转换,请从一个字符串开始推导......
'' + de.ApprovalOrder + de.EntityCode + ISNULL(de.ProjectCode, '')

关于sql - 连接列而不包括具有空值的列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8611449/

10-12 04:54