选择包含特定项目的所有交易?

时间:2019-09-25 12:40:00

标签: sql tsql

早上好

我遇到的问题涉及带有事务的数据库。交易按销售的每个项目存储为行。如果我要选择包含项目11222的所有交易,以便可以看到还购买了哪些其他项目,代码将是什么?

我正在使用:

SELECT [Transaction]
, [Date]
, [Item]
, [Register]
, [Location]

WHERE [Item] = 11222
FROM "Transactions"

然后分别查看每个交易的日期和位置以查看,但是我现在的要求是查看数千个交易。即使特定的行中不包含所请求的项目#,SQL中是否也可以有条件地拉出所有行?

表格中数据的示例:

Transaction Date        Item    Register    Location

123         1/1/2019    11222   1           15
123         1/1/2019    45663   1           15
124         1/1/2019    77433   1           15
124         1/1/2019    11222   1           15
124         1/1/2019    66092   1           15
125         1/1/2019    66933   1           15
125         1/1/2019    77433   1           15
126         1/1/2019    11222   1           15
126         1/1/2019    82991   1           15
127         1/1/2019    88392   1           15
127         1/1/2019    88492   1           15

1 个答案:

答案 0 :(得分:1)

我将其表达为exists

SELECT t.*
FROM Transactions t
WHERE EXISTS (SELECT 1
              FROM Transactions t2
              WHERE t2.transaction = t.transaction AND
                    t2.Item = 11222
             )
ORDER BY t.transaction;  -- keep all the rows for a given transaction together