Sql 1列中的2个值显示在2个单独的列标题下

Sql 1列中的2个值显示在2个单独的列标题下,sql,Sql,我们在subs\u box\u service\u num列中有值599和616 在我们的选择中,我们有 subs_box_service_num AS D_FCS subs_box_service_num AS D_PZR 查询正在生成两个具有这些不同标题的列-很好 我们如何获得显示在特定列下的值599和616 我们希望在D_FCS下显示值599 我们希望在D_PZR下显示值616 这是一个数据透视查询的示例。您不指定查询的其余部分返回的内容。让我假设它返回两行,其中包含这些值,还有一列澄

我们在
subs\u box\u service\u num
列中有值
599
616

在我们的
选择中,我们有

subs_box_service_num AS D_FCS
subs_box_service_num AS D_PZR
查询正在生成两个具有这些不同标题的列-很好

我们如何获得显示在特定列下的值599和616

  • 我们希望在D_FCS下显示值599
  • 我们希望在D_PZR下显示值616

    • 这是一个数据透视查询的示例。您不指定查询的其余部分返回的内容。让我假设它返回两行,其中包含这些值,还有一列澄清了类型。问题是:

      select max(case when thetype = 'FCS' then subs_box_service_num end) as D_FCS,
             max(case when thetype = 'PZR' then subs_box_service_num end) as D_PZR
      
      当然,您案例中的具体细节取决于查询还做了什么以及您使用的数据库。然而,这种使用条件聚合的方法应该是可行的

      编辑:

      您的查询是:

      Select Distinct system_code, subs_acct_num, subs_box_service_num AS D_FCS,   
             subs_box_service_num AS D_PZR
      From ABC_reporting.dbo.subscriber_boxes_addr_serv
      Where subs_box_service_num IN('599','616')
      
      你似乎想要的是:

      Select system_code, subs_acct_num,
             max(case when subs_box_service_num = 599 then subs_box_service_num end) AS D_FCS,   
             max(case when subs_box_service_num = 616 then subs_box_service_num end) AS D_PZR 
      From ABC_reporting.dbo.subscriber_boxes_addr_serv
      Where subs_box_service_num IN('599','616')
      Group by system_code subs_acct_num;
      

      这似乎是一个奇怪的问题。通常,您需要与每种类型关联的一些值。

      您使用的是什么数据库系统?数据是否以任何特定方式相关?预期的输入和期望的输出是什么?这是我们迄今为止从ABC_reporting.dbo中选择的不同系统代码、subs_acct_num、subs_box_service_num作为D_FCS、subs_box_service_num作为D_PZR。subscriber_box_addr_serv其中subs_box_service_num在('599','616')非常感谢!这似乎已经做到了,我仍然有一些调整要做,但这让我克服了这个颠簸!