sql >> Database >  >> RDS >> Mysql

Dynamisch kolommen maken van rijgegevens met Selecteren in Bigquery

Hieronder is voor BigQuery!

Let op:uw verwachtingen over de namen van de uitvoerkolommen zijn niet correct!
Kolomnaam mag niet beginnen met een cijfer - dus in onderstaand voorbeeld zal ik id_1, id_2 en id_3 gebruiken in plaats van 1, 2 en 3

SELECT
  SUM(CASE WHEN id = 1 THEN 1 END) AS id_1,
  SUM(CASE WHEN id = 2 THEN 1 END) AS id_2,
  SUM(CASE WHEN id = 3 THEN 1 END) AS id_3
FROM YourTable

In het bovenstaande voorbeeld wordt ervan uitgegaan dat u uw ID's van tevoren weet en dat er maar heel weinig zijn, dus het is niet erg om handmatig een paar regels te schrijven met SUM(...) voor elke id

Als dit niet het geval is, kunt u eerst de bovenstaande query programmatisch genereren door de onderstaande query uit te voeren

SELECT 'SELECT ' + 
   GROUP_CONCAT_UNQUOTED(
      'SUM(CASE WHEN id = ' + STRING(id) + ' THEN 1 END) AS id_' + STRING(id)
   ) 
   + ' FROM YourTable'
FROM (
  SELECT id FROM (
    SELECT * FROM YourTable GROUP BY id ORDER BY id
)

als resultaat krijg je een string zoals hieronder

SELECT SUM(CASE WHEN id = 1 THEN 1 END) AS id_1,SUM(CASE WHEN id = 2 THEN 1 END) AS id_2,SUM(CASE WHEN id = 3 THEN 1 END) AS id_3 FROM YourTable

Dus kopieer het nu en plak het in Query Editor en voer het uit

je kunt hier een soortgelijk voorbeeld zien - https://stackoverflow.com/a/36623258/5221944




  1. django.db.utils.OperationalError:(2013, verbinding met MySQL-server verbroken bij 'handshake:initieel communicatiepakket lezen', systeemfout:0)

  2. Converteer BIGINT UNSIGNED naar INT

  3. Databases en gegevensbestanden migreren

  4. De beste manier om veilig verbinding te maken met MySQL met PHP