【发布时间】:2015-11-27 09:23:32
【问题描述】:
我正在处理的数据目前采用以下形式:
ID Sex Treatment FillDate
1 M ziprosidone 10/01/98
1 M ziprosidone 10/15/98
1 M ziprosidone 10/29/98
1 M ambien 01/07/99
1 M ambien 01/14/99
2 F telaprevir 03/08/92
2 F telaprevir 03/20/92
2 F telaprevir 04/01/92
我想编写 SQL 代码来获取以下形式的数据:
ID Sex DrugFill1 FillDate1_1 FillDate1_2 FillDate1_3 DrugFill2 FillDate2_1 FillDate2_2 FillDate2_3
1 M ziprosidone 10/01/98 10/15/98 10/29/98 ambien 01/07/99 01/14/99 null
2 F telaprevir 03/08/92 03/20/92 04/01/92 null null null null
另外我想指出,我有超过 10,000 个 ID,每个 ID 都有不同数量的药物和相应的填充日期。我想为那些没有数据要填写的列返回空值。提前致谢。
【问题讨论】:
-
如果在 RDBMS 中执行此操作,则这称为枢轴。但更好的做法是处理应用程序级代码中的数据显示问题,例如一个简单的 PHP 循环(如果可用)。
-
@Justin,你检查我的答案了吗?如果有帮助,请投票和/或标记为已接受...谢谢
-
@Shnugo 抱歉耽搁了,我正在旅行。感谢您的详细回复,您的代码和逻辑似乎与我正在寻找的非常接近。我很感激。
-
@Shnugo 问题,在第一个
SELECT DISTINCT ID, Sex FROM @tbl中是否有必要在其中包含 Sex 变量?我只是问,因为假设除了 Sex 之外我还有一个 Race 列,我是否也需要将它包含在第一个SELECT DISTINCT语句中?谢谢! -
@Justin,嗨,是的,第一条语句包含不随治疗而改变的数据。顺便说一句:最好在它所属的答案下方设置这样的评论......
标签: mysql sql-server merge rows