如何在以下情况下获得不同的记录 [英] How to get distinct records in following situation

查看:74
本文介绍了如何在以下情况下获得不同的记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在下表中指定行,我需要获取不同的列数据,例如



表名:库存

 ProductID SerialNo InvoiceNo Status 
000001 0001 1 购买
000001 0002 1 购买
000002 0001 2 购买
000002 0002 2 购买
000002 0003 2 购买
000002 0004 3 ORDER
000003 0001 3 ORDER
000004 0001 3 ORDER
000005 0001 4 绘画
000005 0002 4 ORDER
000006 0001 4 ORDER
000007 0001 5 ORDER
000008 0001 5 ORDER
000009 0001 6 绘画
000009 0002 6 订单





在这种情况下我希望结果只返回InvoiceNo,其中所有productid状态为'Order'

这里的输出必须是3,5



我想在单个查询中使用它。

解决方案





检查一下。< br $>




  SELECT  InvoiceNo 来自股票其中状态= '  ORDER'  InvoiceNo     select  InvoiceNo 来自股票其中状态<> '  ORDER'





希望这会对你有帮助。


试试这个



 选择 * 
来自股票S
INNER JOIN

选择 invoiceNo,count(不同状态)
来自股票
其中 count( distinct status)= 1
)T on S.InvoiceNo = T.InvoiceNo
其中​​ S.Status = ' 订单'


 SELE CT * FROM Stock WHERE Status ='ORDER'和ProductID NOT IN(SELECT ProductID FROM Stock WHERE Status<> ORDER)


In following table with rows specified, I need to get distinct column data e.g.

table name: Stock

ProductID	SerialNo	InvoiceNo	Status
000001	          0001		   1           PURCHASE
000001	          0002		   1           PURCHASE
000002	          0001		   2           PURCHASE
000002	          0002		   2           PURCHASE
000002	          0003		   2           PURCHASE
000002	          0004		   3           ORDER
000003	          0001		   3           ORDER
000004	          0001		   3           ORDER
000005	          0001	           4	       PAINTING
000005	          0002		   4           ORDER
000006	          0001	           4	       ORDER
000007	          0001		   5           ORDER
000008	          0001		   5           ORDER
000009	          0001	           6	       PAINTING
000009	          0002		   6           ORDER



in this scenario I want result should be return only InvoiceNo which having All productid status as 'Order'
here output must be 3,5

I want this in single query.

解决方案

Hi,

Check this one.


SELECT InvoiceNo from Stock where Status='ORDER' and InvoiceNo not in (select InvoiceNo from Stock where Status <> 'ORDER' )



Hope this will help you.


Try this

select *
from   Stock S
       INNER JOIN 
       (
          select invoiceNo, count(distinct status)
          from  Stock
          where count(distinct status) = 1
       ) T on S.InvoiceNo = T.InvoiceNo
where  S.Status = 'Order'


SELECT * FROM Stock WHERE Status = 'ORDER' AND ProductID NOT IN(SELECT ProductID FROM Stock WHERE Status <> 'ORDER')


这篇关于如何在以下情况下获得不同的记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆