【问题标题】:Combine result return by query into one string - sql server将查询返回的结果合并为一个字符串 - sql server
【发布时间】:2017-02-16 19:55:19
【问题描述】:

以下查询返回两行。我想合并这两行。这可能吗?此逻辑稍后将成为另一个查询的列之一:

select SUM(case 
        when FreeRentMonth = 'Y'
            then 1
        else 0
        end) as months
from LARBICRMFact
where rlm_spaceID in (
    select RefCRMSpaceID
    from #OneAE_Multiple_CRM_deals fs
    where fs.RefLeaseAssumptionID = '58500-TSPECTENB-LSPECTENB-0210'
    )
group by rlm_spaceID

期望的结果:
6|7(而不是 6 和 7 位于两行)。

注意*:子查询可以返回 1 个或多个值。

【问题讨论】:

标签: sql sql-server-2008-r2 concatenation


【解决方案1】:

您需要知道rlm_spaceID 的值才能将行转换为列。

例如假设值 6 和 7 用于 rlm_spaceID "value1" 和 "value2"。

rlm_spaceID   months
value1        6
value2        7

类似这样的:

select SUM(case 
            when rlm_spaceID = 'value1'
                and FreeRentMonth = 'Y'
                then 1
            else 0
            end) as val1,
    SUM(case 
            when rlm_spaceID = 'value2'
                and FreeRentMonth = 'Y'
                then 1
            else 0
            end) as val2
from LARBICRMFact
where rlm_spaceID in (
        select RefCRMSpaceID
        from #OneAE_Multiple_CRM_deals fs
        where fs.RefLeaseAssumptionID = '58500-TSPECTENB-LSPECTENB-0210'
        );

【讨论】:

  • 问题是子查询返回多少个rlm_spaceID是随机的。它可以是 1 或最多 10。我可以创建一个函数来为我做这件事吗?
  • 你想得到一行一列的结果吗?还是一行和单独的列?第一个很容易实现。
  • 正确,我想要一行一列的结果。但是,我将从另一个 select 语句在行级别传递 RefLeaseAssumptionID。这很可能会成为该 select 语句中的一列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-01
  • 1970-01-01
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多