【问题标题】:How to get SQL result view from row to separate columns如何从行获取 SQL 结果视图到单独的列
【发布时间】:2021-06-29 14:25:16
【问题描述】:

我有一个返回结果的复杂选择查询:

  1_id   2_id   3_id    4_id   CultureId
value1  value2  value3    a       1
value1  value2  value3    b       2

我需要以如下格式获取结果:

  1_id   2_id   3_id    4_id_1   4_id_2  
value1  value2  value3    a        b       

我能够想出这个,但也许有更好的方法来实现它?

SELECT 1_id, 2_id, 3_id, (SELECT 4_id from table where 1_id = value1 and CultureId = 1) as 4_id_1, 
                         (SELECT 4_id from table where 1_id = value1 and CultureId = 2) as 4_id_2 
from table where 1_id = value1  

问题是我在我的解决方案中使用了三次的实际内部 SELECT 查询(“SELECT 1_id, 2_id, 3_id, 4_id CultureId from table where 1_id = value1”)是一个复杂的查询,并且包含的​​连接很少解决方案巨大。

有没有办法简化?

【问题讨论】:

  • 嗨 Lia,研究枢轴函数。 cte 也可以达到同样的效果。

标签: sql sql-server select subquery


【解决方案1】:

您可以只聚合和使用min()max()

select id_1, id_2, id_3,
       min(cultureId) as cultureid_1,
       nullif(max(cultureId), min(cultureId)) as cultureid_2
from t
group by id_1, id_2, id_3;

【讨论】:

  • 这适用于cultureId int,如果不是int怎么办?我已经编辑了我的问题示例,使其更接近真实示例
  • id 的类型无关紧要。 max() 基本上适用于所有数据类型。
猜你喜欢
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-20
  • 1970-01-01
相关资源
最近更新 更多