我有3个表,我有查询显示新表,其中每一行都填充了:
SELECT rov.*
FROM report_or_vals rov
WHERE rov.or_group_indice_id = 1
AND report_date BETWEEN ? AND ?
因此,第二行将是:
SELECT rov.*
FROM report_or_vals rov
WHERE rov.or_group_indice_id = 2
AND report_date BETWEEN ? AND ?
问题make是我放置NSDate
对象(iOS,objective-c对象作为保留日期)的地方。
我的问题是,如何修改此查询以显示其他列?哪个值应该等于:(上面的语句中的行值) - (后面的行值语句),其后的语句是类似的语句,但日期减少了一天。
所以,如果我今天的行值等于10,前一天等于7,我希望我的语句包含类似:column_today_value(等于10),column_difference_value(等于3(10-7))
如何用SQL语言实现这一目标?对不起,我是iOS开发者。并且不太熟悉SQL函数。但我希望这实际上是一件容易的事。
答案 0 :(得分:2)
我理解的问题是: 我们如何显示每日价值清单以及每天价值与前一天价值之间的差异
我使用自我联接来完成此任务。
SELECT [TODY].value AS [VALUE]
, [YEST].value AS [PREV_VALUE]
, [TODY].value - [YEST].value AS [DIFFERENCE]
, '[TODY].value - [YEST].value = '
+ CAST([TODY].value - [YEST].value
AS varchar
) AS [WHATS_HAPPENING]
, [YEST].*
FROM report_or_vals AS [YEST]
INNER JOIN report_or_vals AS [TODY]
ON [YEST].date = DATE([TODY].DATE,'-1 day')
/* IF YOU COMMENT THE WHERE CLAUSE YOU WILL SEE VALUES FOR ALL THE DAYS
WHERE [TODY].or_group_indice_id = 2
AND report_date BETWEEN ? AND ?
*/
这是你想要的吗?
答案 1 :(得分:1)
我希望以下解决方案适合您。
SELECT rov.* , rov.vals - (select row.vals from report_or_vals where report_or_vals.date = (NSDate - 1))
FROM report_or_vals rov
WHERE rov.or_group_indice_id = 2
AND report_date BETWEEN ? AND ?