我真的很难解决以下问题,因为我对SQL很新。
问题:projtask表有1个项目的多个任务。我需要转置结果,以便针对1个项目显示单个结果行上每个任务的所有状态(例如,任务150,130,110,70状态)。
目前,由于与该项目相关的任务数量,我将针对1个项目返回多个结果行。我希望这是有道理的。如果没有,请探讨。谢谢,所有的帮助将不胜感激:)
最终我希望结果如下:
Project X - Task 10 - Status C - Task 130 - Status A - Task 150 - Status C
Project Y - Task 10 - Status A - Task 130 - Status C - Task 150 - Status A
Project Z - Task 10 - Status C - Task 130 - Status C - Task 150 - Status C
SELECT IIf(dbo_projtask.[task-num]=150 And dbo_projtask.stat='C','Released') AS 150_status, dbo_projtask.[proj-num],
IIf(dbo_projtask.[task-num]=130 And dbo_projtask.stat='A','Active') AS 130_status
FROM dbo_projtask
GROUP BY IIf(dbo_projtask.[task-num]=150 And dbo_projtask.stat='C','Released'), dbo_projtask.[proj-num],
IIf(dbo_projtask.[task-num]=130 And dbo_projtask.stat='A','Active');**
答案 0 :(得分:0)
不确定我是否理解正确,但尝试为项目下的所有任务创建列并不像一个可扩展的解决方案。为什么不使用ProjectID,TaskID和StatusID创建结果集并进行任何处理/修改clietside?关系数据库倾向于不喜欢那些粗糙/动态的列。如果您完全按照建议的结构设置,则需要构建一个使用各种枢轴结构的动态查询,但如果每个项目都有灵活的任务数量,那么我是否怀疑它是否有效。