因此,簡單地說,我創建的視圖可從4個不同的表中檢索調查數據,但我無法控制這些表的結構,因爲它們來自第三方。SQL從視圖中的一行填充行的值
SELECT v.SurveyID, v.VoterID, v.VoteDate, a.QuestionId, a.AnswerId,
(CASE WHEN a.questionid IN ('8', '509', '514', '516', '518', '519', '577', '723','724', '725', '726', '727', '730')
THEN Fn_surveyconvertanswer(a.answerid, '') ELSE (CASE WHEN a.questionid IN ('758','124') AND a.answerid IN ('2631', '647') THEN CONVERT(INT, CONVERT(VARCHAR(MAX), va.answertext)) ELSE '' END)
END) AS StoreID
FROM Answer a
LEFT JOIN VoterAnswers AS va ON a.AnswerId = va.AnswerID
LEFT JOIN Voter v AS v ON va.VoterID = v.VoterID
LEFT JOIN Question q AS q ON a.QuestionId = q.QuestionId
現在說,當說QuestionID是在我還需要與STOREID列只能發現(「3」,「43」,「55」),那麼每個answerID =一定的商店(實際上另一個是有表answerID鏈接到STOREID但這是無關的問題)。如果我使用一個case語句來找到它,它只會顯示爲一排,這意味着該意見表看起來像
+----------+---------+----------+------------+----------+---------+
| SurveyID | VoterID | VoteDate | QuestionId | AnswerID | StoreID |
+----------+---------+----------+------------+----------+---------+
| 5 | 1 | 9/4/2014 | 1 | 52 | 0 |
| 5 | 1 | 9/4/2014 | 2 | 43 | 0 |
| 5 | 1 | 9/4/2014 | 3 | 78 | 97 |
| 5 | 1 | 9/4/2014 | 4 | 87 | 0 |
| 5 | 1 | 9/4/2014 | 5 | 98 | 0 |
+----------+---------+----------+------------+----------+---------+
由於所有調查數據都是針對該商店的,因此我如何獲得storeID 97的所有行?
EX。
+----------+---------+----------+------------+----------+---------+
| SurveyID | VoterID | VoteDate | QuestionId | AnswerID | StoreID |
+----------+---------+----------+------------+----------+---------+
| 5 | 1 | 9/4/2014 | 1 | 52 | 97 |
| 5 | 1 | 9/4/2014 | 2 | 43 | 97 |
| 5 | 1 | 9/4/2014 | 3 | 78 | 97 |
| 5 | 1 | 9/4/2014 | 4 | 87 | 97 |
| 5 | 1 | 9/4/2014 | 5 | 98 | 97 |
+----------+---------+----------+------------+----------+---------+
我就做左側努力加入上基本上與上述相同的查詢上VoterID(因爲這也是拍攝的每張調查是唯一的),並做一些分組,但現在有喜歡STOREID多個字段上方雲集同樣的方式。它開始變得混亂,實際上在保存爲視圖時會導致一些奇怪的分組錯誤。 (奇怪的工作正常,作爲一個獨立的查詢)我想知道是否有更好的更有效的方式來填充其餘的行與商店ID
我已經使用臨時表這樣的東西在過去與偉大結果,但不能在視圖中使用它們。
怎麼樣DDL和樣本數據? sqlfiddle.com將是一個很好的開始。 – 2014-09-04 15:27:29
用子查詢填充storeID。 – 2014-09-04 15:29:36
嗯,當我意識到必須有更好的方法時,我正在爲StoreID做子查詢,因爲還有其他類似的字段,所以我最終會爲每一行做大約5個子查詢。 – RustyH 2014-09-04 15:33:28