选择多列时,不同的关键字不起作用

时间:2017-04-30 12:29:05

标签: sql sql-server

我有这样的查询:

select distinct po_no, rescan_status 
from T_PoHeader 
order by po_no

我的输出是这样的:

po_no   rescan_status
---------------------
P-01    True
P-02    True
p-03    False
p-04    False
p-04    True

如果我使用po_no关键字,我的distinct会显示重复项。我想只显示不同的po_no

3 个答案:

答案 0 :(得分:1)

distinct关键字适用于您选择的所有列。因为您选择了' rescan_status '对于同一个' po_no ' po_no '有两个不同的'组合

删除' rescan_status '只获得区别' po_no '。

答案 1 :(得分:1)

您的结果对我来说很好看。我没有看到任何重复的行。

推测可能是您希望po_no在每一行都是唯一的。如果是,请使用聚合和聚合函数:

select po_no, max(rescan_status) as rescan_status
from T_PoHeader 
group by po_no
order by po_no;

答案 2 :(得分:0)

;with cte(po_no,rescan_status)
AS
(
SELECT 'P-01','True'  UNION ALL
SELECT 'P-02','True'  UNION ALL
SELECT 'p-03','False' UNION ALL
SELECT 'p-04','False' UNION ALL
SELECT 'p-04','True'
)
SELECT po_no,rescan_status From
(
select po_no,rescan_status ,ROW_NUMBER()OVER(Partition By po_no order by po_no) Seq from cte
)Dt
where Dt.Seq=1