{"id":2068,"date":"2017-01-23T21:34:56","date_gmt":"2017-01-24T02:34:56","guid":{"rendered":"https:\/\/bitpost.com\/news\/?p=2068"},"modified":"2017-01-23T21:34:56","modified_gmt":"2017-01-24T02:34:56","slug":"solve-excel-problems-with-sql","status":"publish","type":"post","link":"https:\/\/bitpost.com\/news\/2017\/solve-excel-problems-with-sql\/","title":{"rendered":"Solve Excel problems with SQL"},"content":{"rendered":"<p>A friend of mine asked for help to do a complicated data pivot on a few thousand rows of data. \u00a0We discussed it and agreed that we probably needed to walk each row\u00a0and do an algorithmic summation on the fly.<\/p>\n<p>My first instinct was to fire up Windows and dust off the old VBA cobwebs in my mind. \u00a0Fortunately that didn&#8217;t last long, and I reached for a far more comfortable friend, SQL. \u00a0The final SQL wasn&#8217;t terribly simple, but wasn&#8217;t terribly complicated either. \u00a0And it was a total linux solution, always the more pleasant solution. \u00a0And totally gui, too, for all you folks who\u00a0get hives when you have to bang at a terminal. \u00a0\ud83d\ude42<\/p>\n<ul>\n<li>Open excel sheet in LibreOffice<\/li>\n<li>Copy columns of interest into a new sheet<\/li>\n<li>Save As -&gt; Text CSV<\/li>\n<li>Create a sqlitebrowser database<\/li>\n<li>Import the CSV file as a new table<\/li>\n<\/ul>\n<p>BAM, easy, powerful, free, cheap, fast, win, win, win!<\/p>\n<p>I ended up using this sql, the key is sqlite&#8217;s\u00a0group_concat(), which just jams a whole query into one field, ha, boom.<\/p>\n<pre><code>SELECT a.email<\/code>\r\n<code> , group_concat(d.Dates) AS Dates<\/code>\r\n<code> , group_concat(d.Values) ASValues<\/code>\r\n<code>FROM (select * from TestData\u00a0ORDER BY email,Dates) AS a<\/code>\r\n<code>inner JOIN TestData AS d ON d.email = a.email<\/code>\r\n<code>GROUP BY a.email;<\/code><\/pre>\n<p>Then I copied\u00a0the tabular result of the query, and pasted into\u00a0the LibreOffice\u00a0sheet, which asked me how to import. \u00a0Delimited by tab and comma, and then always recheck &#8220;select text delimiter&#8221; and use a comma. \u00a0And the cells fill right up.<\/p>\n<p>All is full of light.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A friend of mine asked for help to do a complicated data pivot on a few thousand rows of data. \u00a0We discussed it and agreed that we probably needed to walk each row\u00a0and do an algorithmic summation on the fly. My first instinct was to fire up Windows and dust off the old VBA cobwebs [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"enabled":false},"version":2}},"categories":[19,10],"tags":[263,264,262,261],"class_list":["post-2068","post","type-post","status-publish","format-standard","hentry","category-opensource","category-tricks-tips-tools","tag-excel","tag-group_concat","tag-sql","tag-sqlite"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9M11L-xm","jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/posts\/2068","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/comments?post=2068"}],"version-history":[{"count":1,"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/posts\/2068\/revisions"}],"predecessor-version":[{"id":2069,"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/posts\/2068\/revisions\/2069"}],"wp:attachment":[{"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/media?parent=2068"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/categories?post=2068"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/tags?post=2068"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}