日期:2014-05-18  浏览次数:20633 次

这样复杂的主从明细表查询如何实现?
主表:tabl1
ID       Date               col1         col2
1         2007-1-1       111           222
2         2007-2-1       234           245
3         2007-3-1       456           367
从表:tabl2
ID         Name         Date             value
1           aaa         2007-1-1       345
2           bbb         2007-1-1       245
3           ccc         2007-1-1       223
4           ddd         2007-1-1       355
1           aaa         2007-2-1       423
2           bbb         2007-2-1       345
3           ccc         2007-2-1       568
4           ddd         2007-2-1       435
1           aaa         2007-3-1       356
2           bbb         2007-3-1       123
3           ccc         2007-3-1       536
4           ddd         2007-3-1       341
现在要得到这样的查询结果:
Date                 col1         col2         aaa         bbb         ccc         ddd
2007-1-1         111           222           345         245         223         355
2007-2-1         234           245           423         345         568         435
2007-3-1         456           367           356         123         536         341
也就是说将同一天的从表的name列的值转换为主表的列名,value列转换为对应的值。

------解决方案--------------------
--如果name是固定的

Select
A.[Date],
A.col1,
A.col2,
SUM(Case B.Name When 'aaa ' Then value Else 0 End) As aaa,
SUM(Case B.Name When 'bbb ' Then value Else 0 End) As bbb,
SUM(Case B.Name When 'ccc ' Then value Else 0 End) As ccc,
SUM(Case B.Name When 'ddd ' Then value Else 0 End) As ddd
From
tabl1 A
Inner Join
tabl2 B
On A.[Date] = B.[Date]
Group By
A.[Date],
A.col1,
A.col2
------解决方案--------------------
我也來接點分,呵呵

我更多時候喜歡用靜態寫法,因為靜態寫法格式漂亮,不會象動態寫法那樣看起來有些亂的
感覺,這個想法可好笑.