我想通过执行以下操作获取查询输出的列名:
SELECT queuename
FROM queue
WHERE queue.queuename LIKE 'CLIENT VIP%' and queue.status = 1
对于我想要指示每个队列的不同用户的行:
FROM queue INNER JOIN
queue_users ON queue.queueid = queue_users.queueid INNER JOIN
users ON queue_users.userid = users.userid
WHERE queue.queuename LIKE 'CLIENT VIP%' and queue.status = 1 and userstatus = 1
所以对于输出我会有类似的东西:
User QueueA QueueB QueueC
----------------------------------
Bob Bob Null Bob
Joe Joe Joe Joe
Bill Bill Null Null
这在SQL中是否可能,或者我是否需要以其他方式处理查询的输出?
注意: 我无法假设我知道输出的队列名称。
答案 0 :(得分:1)
根据您的RDMBS,这是使用MAX
和CASE
的一个附件:
SELECT users.userid,
users.user,
MAX(CASE WHEN queue.id = 'A' Then users.user END) QueueA,
MAX(CASE WHEN queue.id = 'B' Then users.user END) QueueB,
MAX(CASE WHEN queue.id = 'C' Then users.user END) QueueC
FROM queue INNER JOIN
queue_users ON queue.queueid = queue_users.queueid INNER JOIN
users ON queue_users.userid = users.userid
WHERE queue.queuename LIKE 'Otsuka VIP%' and queue.status = 1 and userstatus = 1
GROUP BY users.userid
您可能需要更新一些字段名称 - 我猜了几个。上面的SQL Fiddle应该会让你朝着正确的方向前进。
- 编辑 -
鉴于您最近的编辑,如果您不知道queuenames(意味着您不知道要返回多少列),那么这开始听起来更像是演示文稿问题而不是数据库问题。您也许可以使用动态SQL来实现结果,但同样,您最好在UI端进行,而不是使用DAL方面。