私はテーブルがMyTable
であり、その下に3つの主要なカラムがあります。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から質問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第2レコードのショップ名の値のみが表示されますが、最初のレコードは '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
:あなたは
CASE
式のELSE
部分でNULL
値を使用する必要があります。 –予想される_exact_出力を表示してください。ピボットクエリの仕組みについては混乱していると思います。 –
@TimBiegeleisen以前に投稿した回答は私のために働いた –