SQL:分组数据中的条件

时间:2017-03-17 07:47:50

标签: sql

我有下表:

(row)  | date        | transaction  | articleno  | salesamount
==============================================================
(1)    | 2017-01-01  | 1            | A          | 1.0
(2)    | 2017-01-01  | 1            | B          | 2.0
(3)    | 2017-01-01  | 1            | C          | 2.0
(4)    | 2017-01-01  | 1            | null       | 0.0
--------------------------------------------------------------
(5)    | 2017-01-02  | 2            | X          | 1.0
(6)    | 2017-01-02  | 2            | Y          | 2.0
...

我想创建一个SQL语句,该语句遍历我的表并查找 baskets / groups (由datetransaction组合标识),两者都有

  • salesamount> 1.0的行(例如第2行和第3行) AND
  • articlenonull的另一行(例如第4行)

在同一个篮子里(不仅在一行)。我需要回馈符合上述条件的date/transaction组合。在上面的示例表中,第一组是相关的,应返回2017-01-01 & 1

我尝试在having之后使用group by date, transaction条件,但这似乎无法使用having只能用于引用{的列的列或聚合{1}}条款)。

我该怎么做?我需要内部SQL吗?

3 个答案:

答案 0 :(得分:3)

试试这个:

SELECT t1.* FROM (
    SELECT date,transaction
    FROM yourtable
    WHERE salesamount > 1.0  
    GROUP BY date,transaction
) t1
INNER JOIN (
    SELECT date,transaction
    FROM yourtable
    WHERE articleno IS NULL
    GROUP BY date,transaction
) t2
ON t1.date = t2.date AND t1.transaction = t2.transaction

答案 1 :(得分:0)

$_SESSION['path']

答案 2 :(得分:0)

请尝试以下查询(假定的Oracle数据库)。

{{1}}