创建多个列我从来没有这么SQL - 基于价值
- SQL新手这里
- 我希望格式化出来的正确
我一直试图找到一种方法之前发布我可以操纵这些数据,但还没有找到我认为符合我需求的东西。我需要根据另一列的值来创建附加列(在我的情况下,基于观测列)
PID | Observation_Date | Observation_Time | Obs_Value | Observation
1424285941000610 | 20050603 | 115459 | 110 mm Hg |BP Systolic
1424285941000610 | 20050603 | 115459 | 80 mm Hg |BP Diastolic
1424285941000610 | 20050603 | 115459 | N |Smoking Status
1424285941000610 | 20050912 | 141308 | 110 mm Hg |BP Systolic
1424285941000610 | 20050912 | 141308 | 86 mm Hg |BP Diastolic
1424285941000610 | 20051027 | 104202 | 195 lb |Weight
1424285941000610 | 20051027 | 104202 | 104 mm Hg |BP Systolic
1424285941000610 | 20051027 | 104202 | 70 mm Hg |BP Diastolic
1424285941000610 | 20060629 | 092852 | 61.5 in |Height
1424285941000610 | 20060629 | 092852 | 209 lb |Weight
我已经能够打破出来我怎么想使用多个case语句,但我得到的东西看起来像这样:
PID Obs_Date |Obs_Time |smoking status |bp_dia |bp_sys |Height |Weight
1424285963050610 |20121203 |161415 |NULL |NULL |NULL |180lb
1424285963050610 |20121203 |161415 |NULL |NULL |70in |NULL
1424285963050610 |20121203 |161415 |NULL |138mm Hg |NULL |NULL
1424285963050610 |20121203 |161415 |80mm Hg |NULL |NULL |NULL
这将在技术上为我需要它的工作,但我知道它不是正确的,所以我希望我可以得到它类似于下面中行是基于观察相结合日期
理想情况下,它会l ook这样的事情:
PID |Obs_Date |Obs_Time |smoking status |bp_dia |bp_sys |Height |Weight
1424285963050610 |20121203 |161415 |N |80 mmHg |110 mmHg |null |null
我也尝试使用嵌套替换,但我最终以相同的问题,因为它是在一个单一的列。我正在使用SQL server 2008
。任何帮助是极大的赞赏。
显示您正在使用的查询来获取该中转结果。你可能只需要一些MINs或者将这些行分组为单行。 – Ditto 2015-02-06 18:07:42
'CASE WHEN obshead.name ='bp舒张'THEN obs.value + obshead。单位结尾为'bp_dia' ,CASE WHEN obshead.name ='bp systolic'THEN obs.value + obshead。单位末尾为'bp_sys'' ... – Josh 2015-02-06 18:16:45
所以你可以试试:min(CASE WHEN obshead.name ='bp diastolic'THEN obs.value + obshead。unit end)as'bp_dia',min(CASE WHEN obshead.name ='bp systolic'THEN obs.value + obshead。unit end)as'bp_sys'?? – Ditto 2015-02-06 18:24:16