2016-09-30 32 views
-2

的铅丹值这是迄今为止我已经写了我的查询代码:SQL返回从多个密钥

 select 
     workorderkey, 
     WarrantyRoutingStep, 
     StepOrder 
    from tblFAWOWarrantyRoutingsOEM WarrantyRoutings 
    where 
workorderkey=220870 and --fyi i do not want to do this 
StepCompleteDate IS NULL 

结果是这样的

Current Output

我如何得到它看起来像这样,所以它只返回StepOrder列中具有最小值的那一行)?请注意,我不只想要workorderkey 220870的结果;我希望它对每个工单进行分组和返回一个结果 - 只需输入该过滤器进行测试即可。

Desired Output

请原谅图片代替文字表结果。第一次海报,一个月的观众。刚刚几周前开始编写SQL。

+0

你试过GROUP BY workorderkey HAVING StepOrder = MIN(StepOrder)? – C8H10N4O2

+0

请提供没有外部链接的输入和输出。 – Gasper

+1

SELECT TOP 1 ..... –

回答

-2
select 
    min(StepOrder), 
    workorderkey, 
    WarrantyRoutingStep 
from tblFAWOWarrantyRoutingsOEM WarrantyRoutings 
where StepCompleteDate IS NULL 
GROUP BY workorderkey, WarrantyRoutingStep 

这会为你工作

+0

WarramtyRoutingStep有多个每个工作键的唯一值,所以这条路线不会工作 – Matt

1

如果你的DBMS支持窗口的功能很简单:

SELECT * 
FROM 
    (
     select 
      workorderkey, 
      WarrantyRoutingStep, 
      StepOrder, 
      ROW_NUMBER() OVER (PARTITION BY workorderkey ORDER BY StepOrder) as RowNumber 
     from tblFAWOWarrantyRoutingsOEM WarrantyRoutings 
     where StepCompleteDate IS NULL 
    ) t 
WHERE 
    t.RowNumber = 1 

无窗的功能,你还可以这样做:

SELECT wr2.* 
FROM 
    (
     select 
      workorderkey, 
      MIN(StepOrder) as MinStepOrder 
     from tblFAWOWarrantyRoutingsOEM WarrantyRoutings 
     where StepCompleteDate IS NULL 
     GROUP BY 
      workorderkey 
    ) t 
    INNER JOIN tblFAWOWarrantyRoutingsOEM wr2 
    On t.workorderkey = wr2.workorderkey 
    AND StepCompleteDate IS NULL 

但如果每个工单的“步序”不唯一,则后面的方法仍然可能与关系结束。

+0

不会他仍然在这里得到null这是在他的问题 –

+0

@MichaelRudnerEvanchik在他的问题没有任何地方没有任何数据或期望的数据或叙述图像无效! – Matt

+0

不知道为什么这是在操作问题“SQL返回最小值时,另一个字段为空”,那就是为什么我把,而不是steporder为null –