Вы пометили вопрос с помощью VFP, mysql и ODBC, поэтому я предполагаю, что вопрос заключается в том, чтобы сделать это в VFP с серверной частью mySQL (поскольку VFP не имеет драйвера ODBC начиная с V6.x).И я бы также подумал, что значения вашего статуса могут быть больше 3, не по порядку с пробелами, может быть, но всего менее 256 (в противном случае, если они были постоянными 1,2,3, вы могли бы просто сделать подсчет (случай, когда ...затем ... конец) как статус1 ... как запрос).
Затем вы можете получить результаты из MySQL с помощью простого запроса, например:
SQLExec(m.lnYourhandle, 'select status, count(*) as counts'+;
' from myTable group by status','crsCounts')
Затем скрестите его с простым кодом.Весь код будет выглядеть так:
Local lnHandle, ix
lnHandle=Sqlstringconnect('Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=myDataBase;'+;
'User=myUsername;Password=myPassword;Option=3;')
SQLExec(m.lnHandle,'select status, Count(*) as counts'+;
' from myTable'+;
' group by status'+;
' order by status','crsCounts')
SQLDisconnect(0)
Local Array laCounts[1], laStruct[Reccount('crsCounts'),4]
* Get ProductId by transforming it to style
* 'StatusXXX' as field name, i as fieldtype, 4, 0 as field length
Select 'Status'+Padl(Status,3,'0'), 'I', 4, 0 ;
from crsCounts ;
into Array laStruct
* Get the counts into an array - already ordered by status
Select counts From crsCounts Into Array laCounts
* transpose the array from being [rows,1] to [1,cols]
Dimension laCounts[1, Alen(laCounts,1)]
* create the result cursor using laStructs array and insert data
Create Cursor crsXTabbed From Array laStruct
Insert Into crsXTabbed From Array laCounts
Browse