我在GROUP_CONCAT(DISTINCT CONCAT('MAX(IF
标记中获取加密值时遇到错误,实际上我试图获取具有不同prim键的表字段的透视值,我有两个表作为 -
individual_data
----------------------------------- |prim_key |fieldname |answertext| ----------------------------------- |30101 |state |0 | |30101 |Number |4 | |30101 |Name |Rajbanshi | |30101 |Main |RAJBANSHI | |30101 |Surname |RAJBANSHI | |30201 |state |0 | |30201 |Number |4 | |30201 |Name |Pawar | |30201 |Main |Ramesh | |30201 |Surname |Pawar | -----------------------------------
*注意 - 这里aswertext字段是加密的,为了清楚起见,我给出了实际值......
和 sms_household 为
-------------------------- |hhid |sampletype |urid| -------------------------- |30100 |3 |3008| |30200 |4 |3005| --------------------------
并希望得到所需的结果
----------------------------------------------------------------------------------- |prim_key |state | number | name | main | surname | sampletype | urid | ----------------------------------------------------------------------------------- | 30101 | 0 | 4 | Rajbanshi | RAJBANSHI | RAJBANSHI | 3 | 3008 | | 30201 | 0 | 4 | Pawar | Ramesh | Pawar | 4 | 3008 | -----------------------------------------------------------------------------------
同样我把查询写成
SET @@group_concat_max_len = 300000;
SET @sql = NULL;
SELECT
GROUP CONCAT (DISTINCT
CONCAT(
'MAX(IF(I.fieldname = ''',
fieldname,
''', convert(aes_decrypt(answertext,'xyz')USING utf8), NULL)) AS ',
fieldname
)
) INTO @sql
FROM individual_data;
SET @sql = CONCAT('SELECT I.prim_key "prim_key" H.sampletype "sampletype", H.urid "urid"', @sql,
'FROM individual_data I inner join sms_household H on H.hhid = concat'(left(I.prim_key,4),'0')' and H.hhid like '30%' and H.urid like '30%' GROUP BY I.prim_key');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;`
但我在`convert(aes_decrypt(answertext,'basbas')USING utf8)中得到了语法错误信息,ms))AS'..... 我没有弄错.. !!