繁体   English   中英

如何从两列中选择不同的值到一列

How to select distinct value from two columns into one column

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我的表中有两个与位置相关的列,如下所示

| Service_No | A_LOC | Z_LOC |
|------------|-------|-------|
| 001        | A     | B     |
| 002        | A     | C     |
| 003        | Null  | C     |
| 004        | F     | B     |

如何选择组合成单个列表的A_LOCZ_LOC列的不同值? 此查询的结果将是:

A, B, C, F
4 个回复

这是一种方法:

select string_Agg(Location,',') as distinct_location_list
 from (
select A_LOC Location FROM tablename
union 
select Z_LOC Location FROM tablename
) tt

我想,我有一个快速的解决方案。 但是,您可以对其进行优化,也可以采用不同的方式进行优化。

DECLARE @YourTable TABLE
(
Service_No VARCHAR(30),
A_LOC  VARCHAR(30),
Z_LOC  VARCHAR(30)
);
INSERT INTO  @YourTable Values('001','A','B');
INSERT INTO  @YourTable Values('002','A','C');
INSERT INTO  @YourTable Values('003',NULL,'C');
INSERT INTO  @YourTable Values('004','F','B');

DECLARE @TempTable TABLE(FINALDATA  VARCHAR(30));

INSERT INTO @TempTable
SELECT A_LOC FROM @YourTable WHERE A_LOC IS NOT NULL;
INSERT INTO @TempTable
SELECT Z_LOC FROM @YourTable WHERE Z_LOC IS NOT NULL;

SELECT DISTINCT FINALDATA FROM @TempTable;

注意:此代码是用 SQL SERVER 编写的。 请检查代码并告诉我。

或者,如果 string_agg 函数不可用,请尝试此方法。

select 
  STUFF(
         (SELECT ', ' + Loc FROM 
            (
            select distinct A_Loc  as Loc from @t 
            union 
            select distinct Z_Loc  as Loc from @t 
            ) t2 
          FOR XML PATH (''))
        , 1, 1, '') 

我建议使用apply然后过滤和distinct反透视:

select string_agg(loc, ',')
from (select distinct loc
      from t cross apply
           (values (a_loc), (z_loc)) v(loc)
      where loc is not null
     ) v;
2 如何从两列的值中选择 DISTINCT

我想获得出现在两列(或两列)中的任何一列中的不同值。 不是列的分组,而是各个值本身。 例如,查询包含 ORIGIN 和 DESTINATION 列的航空旅行路线表。 我想获取所有机场的列表,无论是始发地还是目的地。 应该返回 如果有任何区别,我正在使用 Postgres 9.6。 ...

3 从一列中不同的行中选择所有列

我正在使用Netezza(基于PostgreSQL),并且需要选择表中的所有列,以便在一列中区分不同的行。 可以在此处找到与答案相关的问题,但是它不能解决所有列的情况,因此答案会引发错误: 包含真实数据的错误摘录: “(”(在char 77处期望))“ ...

4 如何在返回另一列的同时选择一列

我在数据库中有两列: 值是浮点数,日期是一个纪元整数,以毫秒为单位 我正在尝试优化此查询,因为它返回了几千行。 由于我在前端绘制图表,因此需要的数据点少得多。 所以我删节了。 上面的代码将日期缩短为每5秒一次。 因此,现在我想在其上SELECT DISTINCT ...

6 OracleSQL-选择在一个列上具有DISTINCT的所有列

我正在使用Oracle SQL,并且在查询特定列的不同值时尝试返回所有列。 我尝试使用在这里找到的其他答案,但未获得预期的结果。 这是唯一字段查询(返回3203个结果): 我的尝试基于在SO上找到的其他答案(返回2071个结果): 因此,由于两个查询之间的差异如此之大,我 ...

8 在某一列上选择不重复,但返回所有列

我的目的是在一列上使用distinct,但返回所有列。 我的桌子是这样的 我需要对id列进行区分,并返回所有三列以及不相同的id,我需要最新记录。 我需要的输出是 我已经尝试过这两个命令 从样本表中选择唯一的ID,名称,年份。 我将在所有行上进行区分。 ...

9 SELECT DISTINCT在一列上,在mysql中有多列

我必须显示选择多列的结果,但仅在一列上显示不同,我也使用了以下查询,并在下面的链接中进行了引用。 查询一。 以上查询返回所有记录,包括重复记录 我只想显示不重复的类别 以下是图片 在图像上,您可以看到重复的旅行和配件 第二查询 我还引用了此链接 ...

10 在一个列上选择不重复,并返回多个列

在一个表中,每个客户端有2个cust_id版本。 我要实现的是仅在cust_id的一个版本下列出的那些产品的列表,以修复差异并输出报告。 我确实知道,这种区别是行不通的,因为我可能为多个cust_id使用相同的产品。 我试图仅在一列上使用DISTINICT以获得所有客户ID的不同pro ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM