MySQL (Union ALL), MSSQL(UNPIVOT), ORACLE(UNPIVOT)
MySQL solution using UNION ALL\n\nSELECT\n    product_id,\n    \'store1\' AS store,\n    store1 AS price\nFROM Products\nWHERE store1 IS NOT NULL\n    \nUNION A
MySQL solution using UNION ALL\n```\nSELECT\n    product_id,\n    \'store1\' AS store,\n    store1 AS price\nFROM Products\nWHERE store1 IS NOT NULL\n    \nUNION ALL\n\nSELECT\n    product_id,\n    \'store2\' AS store,\n    store2 AS price\nFROM Products\nWHERE store2 IS NOT NULL\n\nUNION ALL\n\nSELECT\n    product_id,\n    \'store3\' AS store,\n    store3 AS price\nFROM Products\nWHERE store3 IS NOT NULL\n```\n\nMSSQL solution using UNPIVOT\n```\nSELECT \n    product_id,\n    store,\n    price\nFROM Products\nUNPIVOT\n(\n\tprice\n\tFOR store in (store1,store2,store3)\n) AS tmp\n```\n\nOracle solution using UNPIVOT \n```\nSELECT \n    product_id,\n    store,\n    price\nFROM Products\nUNPIVOT EXCLUDE NULLS\n(\n\tprice\n\tFOR store in (store1 AS \'store1\',store2 AS \'store2\',store3 AS \'store3\')\n);\n```
['MySQL', 'Oracle']