yzhshi 请入(0分)

  • 主题发起人 主题发起人 qinfen
  • 开始时间 开始时间
Q

qinfen

Unregistered / Unconfirmed
GUEST, unregistred user!
yzhshi:
你好!经过几次的接触,我知道你是一位高手,我有一个问题,放了好几天都没人
理,希望你能关注一下,要不给个思路也好.( 我没钱了,下次再补上)

我以前用 ODBC->ACCESS 写了一个程序用到交叉表查询,现在要改用ODBC->SQL SERVER
,但SERVER 好像不支持交叉表查询,ACCESS中的交叉表查询如下:
F1 F2 F3
------------------------
A WA RED
B WA RED
C WA RED
A WB GREEN
B WB GREEN
C WB GREEN
A WC WHITE
B WC WHITE
C WC WHITE
执行语句:'TRANSFORM Last([F3]) SELECT F1 FROM q3 GROUP BY F1 PIVOT F2'
(语句只是举例)

执行之后,A,B,C 为行标题.WA,WB,WC 为列标题.

F1 WA WB WC
-----------------------------
A RED GREEN WHITE
B RED GREEN WHITE
C RED GREEN WHITE
 
请问用SQL SERVER 如何解决?
 
类似的查询问题论坛里面不少,不过偶对这个查询真的是特别不精通,帮你查一下帖子吧。
稍等……
 
真的有不少,你在richsearch.com里面搜索标题为“交叉表”就可以了。
好像实现起来真的很麻烦,要是我的话,肯定不这么实现了:-)
http://www.delphibbs.com/delphibbs/dispq.asp?lid=679161
http://www.delphibbs.com/delphibbs/dispq.asp?lid=934194
http://www.delphibbs.com/delphibbs/dispq.asp?lid=953507
 
to yzhshi:
你有什么好的办法?
 
没有,如果真的要有这个需求的话,找一个能够倒置显示的DBGrid控件,就应该可以了。(虽然我个人不喜欢使用第三方控件)
否则,写代码……,太难了
 
给你个写法;
SELECT f1,
(SELECT f3
FROM q3 c
WHERE c.f2 = 'WA' AND C.F1 = B.F1) AS WA,
(SELECT f3
FROM q3 c
WHERE c.f2 = 'WB' AND C.F1 = B.F1) AS WB,
(SELECT f3
FROM q3 c
WHERE c.f2 = 'WC' AND C.F1 = B.F1) AS WC
FROM q3 b group by f1
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
702
import
I
I
回复
0
查看
737
import
I
后退
顶部