我已经完成了一个类似这样的trac报告:
SELECT status,
id AS ticket, summary, priority, keywords,
datetime(changetime/1000000, 'unixepoch') AS last_updated,
milestone AS __group__,
reporter, owner
FROM ticket t
WHERE status NOT IN ('closed', 'resolved') AND milestone in ('$MILESTONE')
ORDER by t.milestone ASC, p.value
但是,如果用户未指定$MILESTONE
的值,我想显示我们三个团队中每个团队的结果,按团队分组:
SELECT status,
id AS ticket, summary, priority, keywords,
datetime(changetime/1000000, 'unixepoch') AS last_updated,
milestone AS __group__,
reporter, owner
FROM ticket t
WHERE status NOT IN ('closed', 'resolved') AND milestone in ('project1', 'project2', 'project3')
ORDER by t.milestone ASC, p.value
如何检测sql查询中是否设置了变量?除此之外,是否有一种简单的方法可以在用户首次点击报告时设置$TEAM
的默认值?
(注意:如果不这种方式在sql实现中是一般的,请将其标记为“sql”或发布评论,以便我可以这样做。)
答案 0 :(得分:1)
您应该能够在WHERE子句中使用CASE WHEN ELSE语句,如下所示:
SELECT status,
id AS ticket, summary, priority, keywords,
datetime(changetime/1000000, 'unixepoch') AS last_updated,
milestone AS __group__,
reporter, owner
FROM ticket t
WHERE status NOT IN ('closed', 'resolved')
AND (CASE WHEN '$MILESTONE' != '' THEN (milestone='$MILESTONE')
ELSE (milestone in ('project1', 'project2', 'project3')) END)
ORDER by t.milestone ASC, p.value