{"id":263,"date":"2010-03-28T19:24:02","date_gmt":"2010-03-28T17:24:02","guid":{"rendered":"https:\/\/blog.craue.de\/christian\/?p=263"},"modified":"2010-10-31T10:01:03","modified_gmt":"2010-10-31T09:01:03","slug":"zellen-als-spalten-nutzen-und-werte-zuordnen","status":"publish","type":"post","link":"https:\/\/blog.craue.de\/christian\/2010\/03\/28\/zellen-als-spalten-nutzen-und-werte-zuordnen\/","title":{"rendered":"Zellen als Spalten nutzen und Werte zuordnen"},"content":{"rendered":"<p>In einer Tabelle sind f\u00fcr zwei fest definierte Kategorien A und B die jeweilige Anzahl zu den Ereignissen x und y wie folgt gegeben:<\/p>\n<pre>x\u00a0 y\u00a0 category\u00a0 count\r\n---------------------\r\n1\u00a0 2\u00a0\u00a0\u00a0\u00a0\u00a0 A\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 10\r\n1\u00a0 2\u00a0\u00a0\u00a0\u00a0\u00a0 B\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 20\r\n1\u00a0 3\u00a0\u00a0\u00a0\u00a0\u00a0 A\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 100\r\n1\u00a0 3\u00a0\u00a0\u00a0\u00a0\u00a0 B\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 200\r\n1\u00a0 4\u00a0\u00a0\u00a0\u00a0\u00a0 A\u00a0\u00a0\u00a0\u00a0\u00a0 1000\r\n1\u00a0 5\u00a0\u00a0\u00a0\u00a0\u00a0 B\u00a0\u00a0\u00a0\u00a0\u00a0 2000<\/pre>\n<p>Nun muss die Struktur zur Auswertung dahingehend ge\u00e4ndert werden, dass die Kategorien A und B als Spalten und die jeweilige Anzahl als Wert in den Zeilen, gruppiert nach x und y, bereitstehen. Dazu m\u00fcssen die Zeilen als Spalten ausgegeben und die jeweils zur Kategorie passende Anzahl, unter Ber\u00fccksichtigung der Ereignisse, als Wert in diese Spalte geschrieben werden. Auch m\u00fcssen bisher nicht definierte Anzahlen auf 0 gesetzt werden, sodass das Resultat folgenderma\u00dfen aussieht:<\/p>\n<pre>x\u00a0 y\u00a0\u00a0\u00a0 A\u00a0\u00a0\u00a0\u00a0 B\r\n----------------\r\n1\u00a0 2\u00a0\u00a0\u00a0 10\u00a0\u00a0\u00a0 20\r\n1\u00a0 3\u00a0\u00a0 100\u00a0\u00a0 200\r\n1\u00a0 4\u00a0 1000\u00a0\u00a0\u00a0\u00a0 0\r\n1\u00a0 5\u00a0\u00a0\u00a0\u00a0 0\u00a0 2000<\/pre>\n<p>Erreicht werden kann das mit dieser Abfrage:<\/p>\n<pre>SELECT\r\n  `x`, `y`,\r\n  SUM(IF(`category` = \"A\", `count`, 0)) `A`,\r\n  SUM(IF(`category` = \"B\", `count`, 0)) `B`\r\nFROM `Test`\r\nGROUP BY `x`, `y`<\/pre>\n<p>Hierbei wird das Ergebnis nach den Ereignissen x und y gruppiert und dabei f\u00fcr beide Kategorien die entsprechende Summe der Anzahl gebildet.<\/p>\n<p>Das Problem dabei ist jedoch die Beschr\u00e4nkung auf eine vorgegebene Menge von Kategorien. Eine L\u00f6sung f\u00fcr variable Werte w\u00e4re interessant, l\u00e4sst sich allerdings (wahrscheinlich) aufgrund der unklaren Anzahl resultierender Spalten nicht allein in SQL realisieren.<\/p>\n<p>F\u00fcr alle, die damit selbst ein wenig spielen m\u00f6chten, hier die Anweisungen zum Erzeugen und F\u00fcllen der Test-Tabelle:<\/p>\n<pre>CREATE TABLE `Test` (\r\n  `x` int(11) NOT NULL,\r\n  `y` int(11) NOT NULL,\r\n  `category` enum('A','B') NOT NULL,\r\n  `count` int(11) NOT NULL\r\n);\r\n\r\nINSERT `Test` (`x`, `y`, `category`, `count`) VALUES\r\n(1, 2, 'A', 10),\r\n(1, 2, 'B', 20),\r\n(1, 3, 'A', 100),\r\n(1, 3, 'B', 200),\r\n(1, 4, 'A', 1000),\r\n(1, 5, 'B', 2000);\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>In einer Tabelle sind f\u00fcr zwei fest definierte Kategorien A und B die jeweilige Anzahl zu den Ereignissen x und y wie folgt gegeben: x\u00a0 y\u00a0 category\u00a0 count &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; 1\u00a0 2\u00a0\u00a0\u00a0\u00a0\u00a0 A\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 10 1\u00a0 2\u00a0\u00a0\u00a0\u00a0\u00a0 B\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 20 1\u00a0 3\u00a0\u00a0\u00a0\u00a0\u00a0 A\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 100 1\u00a0 3\u00a0\u00a0\u00a0\u00a0\u00a0 B\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 200 1\u00a0 4\u00a0\u00a0\u00a0\u00a0\u00a0 A\u00a0\u00a0\u00a0\u00a0\u00a0 1000 1\u00a0 5\u00a0\u00a0\u00a0\u00a0\u00a0 B\u00a0\u00a0\u00a0\u00a0\u00a0 2000 Nun muss [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[132],"tags":[133,209],"_links":{"self":[{"href":"https:\/\/blog.craue.de\/christian\/wp-json\/wp\/v2\/posts\/263"}],"collection":[{"href":"https:\/\/blog.craue.de\/christian\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.craue.de\/christian\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.craue.de\/christian\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.craue.de\/christian\/wp-json\/wp\/v2\/comments?post=263"}],"version-history":[{"count":0,"href":"https:\/\/blog.craue.de\/christian\/wp-json\/wp\/v2\/posts\/263\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.craue.de\/christian\/wp-json\/wp\/v2\/media?parent=263"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.craue.de\/christian\/wp-json\/wp\/v2\/categories?post=263"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.craue.de\/christian\/wp-json\/wp\/v2\/tags?post=263"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}