2
我有一個表MyTable
其中下面是三個主要列。varchar列上的Min()和Max()的行爲不一致
ContactId | QuestionId | ResponseValue
8 31 Ankush Agro
8 32 Pramod Gho
9 31 Pawansut K S K
9 32 sandip mor
以上ResponseValue
列是動態列。即 響應值根據來自問題管理員的問題ID而改變。
換句話說,這是個什麼表間接代表,
ContactId | Question | ResponseValue
8 Shop Name Ankush Agro
8 Owner Name Pramod Gho
9 Shop Name Pawansut K S K
9 Owner Name sandip mor
所以現在我的要求是,我需要每個課題名稱的問題列 的列標題。即Pivot
商店名稱和所有者名稱表。 由於聚合函數不能在非數字列我使用min()
和Max()
功能
像這樣,
Select
max(Case MyTable.QuestionID When '31' Then ResponseValue else 'N/A' End) [Shop Name],
max(Case MyTable.QuestionID When '32' Then ResponseValue else 'N/A' End) [Owner Name]
from MyTable
left join QuestionMaster on QuestionMaster.QuestionId= MyTable.QuestionId
where MyTable.QuestionId in (31,32)
的問題即我面臨是, 如果我使用Max()
上使用的shopname只顯示第二個記錄的商店名稱值,但第一個記錄是'N/A'
Shop Name | Owner Name
Pawansut K S K sandip mor
N/A Pramod Gho
當我使用Min()
反之亦然發生
Shop Name | Owner Name
N/A sandip mor
Ankush Agro Pramod Gho
有人能給我爲什麼發生這種情況的洞察力?
這是我多麼希望我的查詢讓結果集
Shop Name | Owner Name
Pawansut K S K sandip mor
Ankush Agro Pramod Gho
我刪除了MySQL的標記,因爲你似乎是使用SQL Server。 –
請顯示您期望的_exact_輸出。我認爲你對數據透視查詢的工作方式感到困惑。 –
@TimBiegeleisen您之前發佈的答案對我有用 –