当前位置: 代码迷 >> VFP >> 请问怎么作此查询
  详细解决方案

请问怎么作此查询

热度:1937   发布时间:2013-02-26 00:00:00.0
请教如何作此查询

SQL code
机号      品种          日期1         a          12号2         a          15号3         b          12号4         b          10号5         b           9号6         c           9号7         c          15号8         d          18号9         d          10号10        a          12号11        b          10号12        c          15号

请问如何查询出此表:

SQL code
品种 9号 10号 11号 12号 13号 14号 15号 16号 17号 18号 a                 1             2 a                10 b   5    4        3 b       11 c   6                           7 c                              12 d        9                                    8

谢谢!这里编排格式有问题,意思是品种和日期交叉对应机号

------解决方案--------------------------------------------------------
SQL code
Create Cursor 原表 (机号 C(10),品种 C(10),日期 C(4))Insert Into 原表 Values ("1#","a","1号")Insert Into 原表 Values ("4#","a","1号")Insert Into 原表 Values ("7#","a","1号")Insert Into 原表 Values ("12#","a","1号")Insert Into 原表 Values ("2#","a","3号")Insert Into 原表 Values ("5#","a","3号")Insert Into 原表 Values ("10#","a","3号")Insert Into 原表 Values ("3#","a","4号")Insert Into 原表 Values ("9#","a","4号")Insert Into 原表 Values ("6#","b","3号")Insert Into 原表 Values ("11#","b","3号")Insert Into 原表 Values ("8#","b","5号")Browse  && 原表内容*-- ↑ 产生测试数据lcFieldStr='Create Cursor 结果表 (品种 C(10)'For lnI=1 To 31    lcFieldStr=lcFieldStr+',_'+Transform(lnI)+'号 C(4)'EndforlcFieldStr=lcFieldStr+')'&lcFieldStr.Select 原表LocatelcPZ=''Scan    Select 结果表    Locate For Alltrim(品种)==Alltrim(原表.品种) And Empty(Evaluate('_'+原表.日期))    If !Found()        Append Blank    Endif    Replace 品种 With 原表.品种,('_'+原表.日期) With 原表.机号EndscanSelect 结果表Index On 品种 To pz_syLocateBrowse && 结果表内容
------解决方案--------------------------------------------------------
服!

我替你一次都做了吧!
问题:


答案:
SQL code
Set Safety Off*½¨±í¼°Éú³É²âÊÔÊý¾ÝCreate Table Ô´±í (»úºÅ c(5),Æ·ÖÖ c(1),ÈÕÆÚ c(4))Insert Into Ô´±í (»úºÅ,Æ·ÖÖ,ÈÕÆÚ) Values ("1#","a","1ºÅ")Insert Into Ô´±í (»úºÅ,Æ·ÖÖ,ÈÕÆÚ) Values ("4#","a","1ºÅ")Insert Into Ô´±í (»úºÅ,Æ·ÖÖ,ÈÕÆÚ) Values ("7#","a","1ºÅ")Insert Into Ô´±í (»úºÅ,Æ·ÖÖ,ÈÕÆÚ) Values ("12#","a","1ºÅ")Insert Into Ô´±í (»úºÅ,Æ·ÖÖ,ÈÕÆÚ) Values ("2#","a","3ºÅ")Insert Into Ô´±í (»úºÅ,Æ·ÖÖ,ÈÕÆÚ) Values ("5#","a","3ºÅ")Insert Into Ô´±í (»úºÅ,Æ·ÖÖ,ÈÕÆÚ) Values ("10#","a","3ºÅ")Insert Into Ô´±í (»úºÅ,Æ·ÖÖ,ÈÕÆÚ) Values ("3#","a","4ºÅ")Insert Into Ô´±í (»úºÅ,Æ·ÖÖ,ÈÕÆÚ) Values ("9#","a","4ºÅ")Insert Into Ô´±í (»úºÅ,Æ·ÖÖ,ÈÕÆÚ) Values ("6#","b","3ºÅ")Insert Into Ô´±í (»úºÅ,Æ·ÖÖ,ÈÕÆÚ) Values ("11#","b","3ºÅ")Insert Into Ô´±í (»úºÅ,Æ·ÖÖ,ÈÕÆÚ) Values ("8#","b","5ºÅ")Create Table ½á¹û±í (Æ·ÖÖ c(1))For i=1 To 31    zdname="_"+ALLTRIM(Str(i))+"ºÅ"    Alter Table ½á¹û±í Add Column &zdname c(5)Endfor*Éú³É½á¹ûSelect Ô´±íIndex On Æ·ÖÖ+CHRTRAN(STR(VAL(Chrtran(»úºÅ,'#','')),4,0),' ','0') To Ô´±íGO topScan    Scatter Memv    zdname="_"+ALLTRIM(m.ÈÕÆÚ)    Select ½á¹û±í    Go Top    Locate For Æ·ÖÖ==m.Æ·ÖÖ    Do While .t.        If Found() And ALLTRIM(&zdname)==""            Replace &zdname With m.»úºÅ            Exit        Else            If !Eof()                Continue            Else                Append Blank                Replace Æ·ÖÖ With m.Æ·ÖÖ,&zdname With m.»úºÅ                Exit            Endif        Endif    Enddo    Select Ô´±íEndscanSet Safety OnSelect ½á¹û±íBrowse
  相关解决方案