Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我可以把这个销售比较放在一列中吗?_Sql_Case When - Fatal编程技术网

Sql 我可以把这个销售比较放在一列中吗?

Sql 我可以把这个销售比较放在一列中吗?,sql,case-when,Sql,Case When,以下是我的数据: CREATE TABLE SALES ( ts TIMESTAMP NOT NULL, name VARCHAR(50) NOT NULL, quantity INTEGER, price DECIMAL(2,2) ); INSERT INTO SALES VALUES ("2017-02-08 13:38:02", "apple", 6, 4.38), ("2017-02-08 13:38:02", "banana", 10,

以下是我的数据:

CREATE TABLE SALES (
    ts TIMESTAMP NOT NULL,
    name VARCHAR(50) NOT NULL,
    quantity INTEGER,
    price DECIMAL(2,2)
);

INSERT INTO SALES VALUES
    ("2017-02-08 13:38:02", "apple", 6, 4.38),
    ("2017-02-08 13:38:02", "banana", 10, 3.50),
    ("2017-02-08 13:38:02", "orange", 8, 2.98),
    ("2017-02-08 09:21:52", "banana", 6, 2.67),
    ("2017-02-08 09:21:52", "pear", 3, 2.00),
    ("2017-02-07 15:21:32", "apple", 6, 4.38),
    ("2017-02-07 15:21:32", "banana", 6, 2.67),
    ("2017-02-07 11:03:16", "orange", 8, 2.98),
    ("2017-02-07 11:03:16", "banana", 4, 1.17);
我想买今天卖但不是昨天卖的东西

我可以使用以下方法将它们分为两列:

select
    name,
    SUM(case when strftime('%Y-%m-%d', sales_ts) = '2017-02-08' then quantity  else 0 end) as today,
    SUM(case when strftime('%Y-%m-%d', sales_ts) = '2017-02-07' then quantity  else 0 end) as yday
from sales
group by name
having yday = 0
结果:

| name | today | yday
---------------------
| pear |   3   |  0

但我怎么能只得到两列,一列是name,一列是名为“sell_today,但不是”yday,值为真/假?可能吗?(最好不使用子查询)。

您可以使用
案例:

select name,
       (case when SUM(case when strftime('%Y-%m-%d', sales_ts) = '2017-02-08' then quantity  else 0 end) > 0 and
                  SUM(case when strftime('%Y-%m-%d', sales_ts) = '2017-02-07' then quantity  else 0 end) = 0
             then 1 else 0
        end) as isTodayNotYesterday
from sales
group by name;

您的代码似乎是SQLite。SQLite没有布尔列。一个0/1的整数能满足你的需要吗?是的,0和1都可以!谢谢