Ich habe Tabellen wieIst es möglich, eine Abfrage mit mehreren dynamischen Pivots zu schreiben?
Partners
===============
id | name
---------------
1 | "John"
2 | "Jacob"
Regions
====================
id | name
--------------------
1 | "Antarctica"
2 | "Coruscant"
3 | "Iraq"
Destinations
============================
id | partner_id | region_id
----------------------------
1 | 1 | 1
2 | 1 | 2
3 | 2 | 2
Surveys
================
id | title
----------------
1 | "Part 1"
2 | "Bonus"
Versions
======================
id | title
----------------------
1 | "First Version"
2 | "Version #2"
Permissions
==========================================
id | partner_id | survey_id | version_id
------------------------------------------
1 | 1 | 1 | 1
2 | 1 | 1 | 2
3 | 2 | 1 | 1
Sections
=======================================
id | survey_id | title
---------------------------------------
1 | 1 | "Some Section"
2 | 1 | "Some Other Section"
3 | 2 | "Yet Another Section"
Subsections
=================================
id | title | section_id
--------------------------------
1 | "Subsec" | 1
2 | "Subsecc" | 1
3 | "Ss" | 2
4 | "kasjhja" | 3
5 | "aslkdjas" | 3
Questions
===================================================================
id | subsection_id | qtext | version_id
-------------------------------------------------------------------
1 | 1 | "What is 1+1?" | 1
2 | 1 | "What is 2+2?" | 1
3 | 1 | "What is one plus one?" | 2
4 | 1 | "What is two plus two?" | 2
5 | 2 | "How are you doing?" | 1
6 | 2 | "What's up?" | 2
7 | 3 | "What would you rate her?" | 1
8 | 3 | "What would you rate her?" | 2
9 | 4 | "Number of bits in a byte?" | 1
10 | 5 | "What year is it?" | 1
11 | 5 | "The year is ...."? | 2
Answers
========================================
id | question_id | partner_id | val
----------------------------------------
1 | 1 | 1 | 2
2 | 1 | 2 | 2
3 | 2 | 1 | 4
4 | 2 | 2 | 4
5 | 3 | 1 | 2
6 | 4 | 1 | 69
7 | 5 | 1 | 55
8 | 6 | 1 | 10
9 | 7 | 1 | 9
10 | 8 | 1 | 10
11 | 9 | 1 | 8
12 | 10 | 1 | 2016
13 | 11 | 1 | 2016
MarkedAsFinished
===========================================
id | partner_id | survey_id | version_id
-------------------------------------------
1 | 1 | 1 | 1
2 | 1 | 2 | 1
3 | 1 | 1 | 2
4 | 2 | 1 | 1
wo die PK/FK Beziehungen von meinen Namenskonventionen selbsterklärend sind. Wenn möglich, würde Ich mag eine Abfrage
CREATE PROCEDURE AnswerDump
@versid INT
AS
...
, das wäre zum Beispiel der folgenden Tabelle zurück, wenn mit versid
ausgeführt (entsprechend Versions.id
) gleich 1
.
name | Destined for Antarctica? | Destined for Coruscant? | Destined for Iraq? | Finished with Part 1? | Finished with Bonus? | Permission to contact about Part 1? | Permission to contact about Bonus? | What is 1+1? | What is 2+2? | How are you doing? | What would you rate her? | Number of bits in a byte? | What year is it?
=============================================================================================================================================================================================================================================================================================================================================
"John" | Yes | Yes | No | Yes | Yes | Yes | No | 2 | 4 | 55 | 9 | 8 | 2016
"Jacob" | No | Yes | No | Yes | No | Yes | No | 2 | 4 | 0 | 0 | 0 | 0
Also, was es im Grunde tut, ist Partners
als Zeilen verwenden und alle anderen zugehörigen Informationen wie Spalten. Sie können sehen, dass es Antworten für Fragen, die noch nicht ausgefüllt wurden, mit Null füllt.
Sorry, wenn dies scheint wie ein „meinen Code schreiben für mich“ Frage, aber ich habe viel Mühe gegeben, es zu schreiben ...
Schön, dass Sie Beiträge verfassen Tabellen mit Beispieldaten, aber http: //sqlfiddle.com wird viel besser sein. Die Konvertierung von Text in ein Skript braucht Zeit. – lad2025
Hier ist ein großartiger Ort, um anzufangen. http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –
Dies scheint nicht wie eine schreiben meinen Code für mich Frage - WEIL SIE HABEN KEINE FRAGE. Wenn jedoch Ihre Frage ist, welchen Code ich schreiben soll, dann ist es ein Code für mich schreiben. Also ... was ist deine Frage? – Hogan