2016-12-06 58 views
1

引用一个结果,我有一个SQLite数据库如何在一个子查询

+----+-------------+-------+ 
| ID | Week Number | Count | 
+----+-------------+-------+ 
| 1 |   1 | 31 | 
| 2 |   2 | 16 | 
| 3 |   3 | 73 | 
| 4 |   4 | 59 | 
| 5 |   5 | 44 | 
| 6 |   6 | 73 | 
+----+-------------+-------+ 

下表我想下表脱身。我把这个星期的销售额作为一列,然后下一列将是最后一周的销售额。

+-------------+-----------+-----------+ 
| Week Number | This_Week | Last_Week | 
+-------------+-----------+-----------+ 
|   1 |  31 | null  | 
|   2 |  16 | 31  | 
|   3 |  73 | 16  | 
|   4 |  59 | 73  | 
|   5 |  44 | 59  | 
|   6 |  73 | 44  | 
+-------------+-----------+-----------+ 

这是select语句我打算用:

select 
    id, week_number, count, 
    (select count from tempTable 
    where week_number = (week_number-1)) 
from 
    tempTable; 

回答

1

您在两个不同行的比较值。当你只写week_number时,数据库不知道你的意思。

要引用特定表格中的列,必须在表格名称前面加上前缀:tempTable.week_number

如果两个表具有相同的名称,你必须重命名它们中的至少一个:

SELECT id, 
     week_number, 
     count AS This_Week, 
     (SELECT count 
     FROM tempTable AS T2 
     WHERE T2.week_number = tempTable.week_number - 1 
     ) AS Last_Week 
FROM tempTable; 
0

如果你想利用在同一个表的查询两次,你必须把别名在原来的一个和其复制的一个区分它们

select a.week_number,a.count this_week, 
     (select b.count from tempTable b 
     where b.week_number=(a.week_number-1)) last_week 
    from tempTable a; 
相关问题