1

意図したとおりに機能する次の動的SQLクエリがあります。しかし今、account_id に対する別のクエリの結果と結果を結合したいと考えています。クエリを派生テーブルにしてから結合するという通常の方法を試しましたが、これは機能しません (すべてのセミコロンに関係していると思います)。動的 SQL クエリを別のクエリと結合する特別な方法はありますか?

    SET @sql = NULL;
  SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'sum(CASE WHEN phone_name = ''',
      phone_name,
      ''' THEN 1 else 0 END) AS `',
      phone_name, '`'
    )
  ) INTO @sql
FROM yt;

SET @sql 
  = CONCAT('SELECT account_id, ', @sql, ' 
            from yt
            group by account_id');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
4

1 に答える 1

0

残りのクエリを連結に単純に入れることができますか?

...
/* Your existing code */
SET @sql 
  = CONCAT('SELECT account_id, ', @sql, ' 
            from yt
            group by account_id');

/* Now put your derived table stuff in */
SET @sql 
  = CONCAT('select a.account_id, b.something_else
            from some_table as b join (', @sql, ') as a
            on a.account_id = b.account_id');

/* Continue your existing code */
PREPARE stmt FROM @sql;
...
于 2013-04-17T17:29:00.350 に答える