【发布时间】:2010-11-30 11:53:22
【问题描述】:
我有一堆这样的表:
Lookup_HealthCheckupRisks
------------
ID Name
1 Anemia
2 Anorexic
3 Bulemic
4 Depression
...
122 Syphilis
PatientRisksOnCheckup
------------------
ID CheckupID RiskID
1 11 2
2 11 3
3 12 1
4 14 1
5 14 3
...
但我需要一个扁平化版本,像这样:
PatientCheckup
------------------
CheckupID Risk_1 Risk_2 Risk_3 Risk_4 .. Risk_122
11 0 1 1 0 0
12 1 0 0 0 0
13 0 0 0 0 0
14 1 0 1 0 0
我不知道该怎么做,我能想到的最好的方法是写一个临时表,定义所有 122 列,然后执行If Exists ( SELECT * FROM PatientRisksOnCheckup where RiskID=i and checkupID=j ) INSERT INTO PatientCheckup (1) WHERE CheckupID=j 并遍历i, j... >_
只为一个表编写此查询不是最好的,但我需要为另外 30 个相同大小的表平展这样的数据。呃……请给点建议?
我也很想知道我正在做的事情是否是常见的事情......?
我需要对统计软件的 sql 数据进行非规范化/扁平化。
【问题讨论】:
-
请描述您使用的数据库。
-
+1 感谢您在 Stackoverflow 上成为一个理智的人
标签: sql sql-server pivot lookup-tables