SQL Server:获取出现 ProductID 的所有行



给定此数据集:

+----+-----------+----------+
| ID | ProductID | quantity |
+----+-----------+----------+
|  1 |         1 |        4 |
|  1 |         2 |       13 |
|  1 |         4 |       12 |
|  1 |        19 |        3 |
|  2 |        19 |        4 |
|  2 |        22 |        2 |
|  2 |         2 |        6 |
|  2 |        38 |        1 |
|  2 |        14 |        4 |
|  3 |        11 |        5 |
|  3 |        12 |        6 |
|  4 |        13 |        3 |
|  4 |        14 |       11 |
|  5 |        15 |        2 |
|  6 |        16 |        3 |
|  7 |        17 |        4 |
|  8 |        18 |        9 |
|  8 |        19 |        8 |
+----+-----------+----------+

我的结果集应如下所示:

+----+-----------+----------+
| ID | ProductID | quantity |
+----+-----------+----------+
|  1 |         1 |        4 |
|  1 |         2 |       13 |
|  1 |         4 |       12 |
|  1 |        19 |        3 |
|  2 |        19 |        4 |
|  2 |        22 |        2 |
|  2 |         2 |        6 |
|  2 |        38 |        1 |
|  2 |        14 |        4 |
|  8 |        18 |        9 |
|  8 |        19 |        8 |
+----+-----------+----------+

我正在尝试查找 ProductID 19,结果集必须包含所有 ID、产品 ID 和数量。

这是如何工作的?我尝试了不同类型的子查询和联接,但我无法管理这个。

提前感谢您的任何帮助!

编辑:我正在使用SQL Server 2018

数据架构: 数据

似乎只需要in

select t.ID ,t.ProductID,t.quantity 
from your_table t where t.ID in ( select ID from your_table t1 where t1.PRODUCT_ID =19)

从您的评论中,在我看来,您需要子查询

in检查此小提琴链接

https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=dfd72f991002af383465af763af290c3

SELECT * FROM TABLENAME
WHERE ID IN (SELECT ID FROM TABLENAME WHERE PRODUCT_ID = <yourID>) 

我想这就是你要找的

根据您的图片(考虑到 gtin 是产品 ID(

您的查询应该是

SELECT * FROM TABLENAME
WHERE receipt_header_id IN (SELECT receipt_header_id 
FROM TABLENAME 
WHERE gtin = <yourID>)

最新更新