あなたのパラメータがフィールド名を保持していると大胆に想定しています。そうでなければ、あなたがそこにいる理由はありません。
グループ化されたアイテムはグループ内でまったく同じ値が含まれている場合、あなたはこのようminまたはmaxを使用してグループ化せずに行うことができますが:
SELECT Min(@param1), Min(@param2), Min(@param3), t.field1, sum(t.amount)
FROM table t
WHERE t.field 2 IS NOT NULL AND
t.field3ID = '12345'
あなたはまだ問題がそのフィールドを持っているでしょうこのように選択することはできません。
あなたはcase文を使用することができ、これは動作しますが、文でグループを取り除きたい場合は、上から「最小/最大」の哲学と組み合わせることができます:私はあなたが選ぶことができると思い
SELECT
case
when @param1 = 'colname1' then colname1
when @param1 = 'colname2' then colname2
when @param1 = 'colname2' then colname3
else null
end,
case
when @param2 = 'colname1' then colname1
when @param2 = 'colname2' then colname2
when @param2 = 'colname2' then colname3
else null
end,
case
when @param3 = 'colname1' then colname1
when @param3 = 'colname2' then colname2
when @param3 = 'colname2' then colname3
else null
end,
t.field1,
sum(t.amount)
FROM table t
WHERE t.field2 IS NOT NULL AND
t.field3ID = '12345'
GROUP BY
case
when @param1 = 'colname1' then colname1
when @param1 = 'colname2' then colname2
when @param1 = 'colname2' then colname3
else null
end,
case
when @param2 = 'colname1' then colname1
when @param2 = 'colname2' then colname2
when @param2 = 'colname2' then colname3
else null
end,
case
when @param3 = 'colname1' then colname1
when @param3 = 'colname2' then colname2
when @param3 = 'colname2' then colname3
else null
end,
t.field1
以下のソリューション間:
- 使用の動的SQLクライアント側で必要なすべてのフィールドとフィルタフィールドを選択し、複数のPROCを作成します。 edures
- ユースケース文
それはすべてあなたがそれを使用しようとしている方法によって異なります。すべてt.field1の
param1、param2、その他はフィールドの名前を保持することはできますか? – JohnFx