2016-09-26 9 views
0

だから私は他のいくつかの列の値に基づいてクエリの列の値を出力する必要があります。このために、cfloopを使用してクエリ列から各値を確認し、値を設定しました。私のコードは次のようになります。ColdFusionクエリ出力?

<cfloop query="myQuery"> 
    <cfif status EQ "ABC" OR status EQ "DEF"> 
     <cfif trim(exitStatus) EQ ''> 
      <cfset col8val = #col8val#> 
     <cfelse> 
      <cfset col8val = #col8val# A> 
     </cfif> 
    </cfif> 
</cfloop> 

は、だから私は、私は私がループする必要はありません。そのように一つの場所に私の結果を格納するために使用すべきか思ったんだけど、私はシンプルたいちょうど私の結果はこれのcfloop後に設定ダンプします上記。配列や構造体を使うことはできません。なぜなら、両方とも結果を得るためには追加のループを必要とするからです。 SQLでこれを実行しようとしましたが、2つの異なる列の2つのCASE文を組み合わせることはできませんでした。誰かがこの問題を助けることができるなら私に知らせてください。

+4

'SELECT CASE状態= 'ABC' やステータス= 'DEF' AND(終了ステータス= '' OR終了ステータスIS NULL)THEN ELSE col8val col8val +「A''このような何かをSQLで動作するはずです。クエリ自体を更新する別のオプションです。 http://www.bennadel.com/blog/1708-ask-ben-updating-columns-in-an-existing-coldfusion-query-object.htm。私は1トンのループを書く前にどちらかを調べます。 – Leeish

+1

ケースの構成を見つけたら、それぞれのメソッドを実行します。ロジックを適用するためにデータベースを使用すると、ループの必要性がなくなりますが、それがより効率的になるという保証はありません。 –

+1

@Leeishそれだけで答えにならないのはなぜですか?私は、ほぼ答えである質問には非常に多くのコメントがあります。 –

答えて

2

次の2つの異なる列からcase文を行うことができますが、多分あなたはどれだけ知っていません。私はそれがどのように行われているかを見るためにあなたが使っているSQLのどんな風味をさらに研究するでしょう。 SQL Serverでは、あなたはこのような何か行うことができます:Ask Ben: Updating Columns In An Existing ColdFusion Query Object

SELECT CASE WHEN status IN ('ABC', 'DEF') AND COALESCE(exitStatus,'') = ''THEN col8val 
      ELSE col8val + 'A' 
     END AS TheNewValue 
FROM TableName 
WHERE .... 

別のオプションを物理的にクエリオブジェクトを編集し、ベンによってこの記事はそれを行う方法について説明しすることです。しかし、あなたの正確な質問

だから私は、私は私がループする必要はありません。そのように一箇所 に私の結果を格納するために使用すべきか思ったんだけど、私はシンプルなちょうど私の結果をダンプしたい 上記のcfloopの後に設定します。 は両方とも結果を得るために追加のループが必要になるため、配列や構造体を使用できません。

私は完全にあなたの質問を理解していません。 「結果を1か所に保存」したいが、配列や構造体を使用したくない。まあ、配列や構造体を使うことができないのであれば、どうやってプリミティブではないデータを格納できると思いますか?また、どのようにデータを使用するのかは明確ではありません。クエリを配列や構造体やリストなどに効率的に変換するいくつかの関数がありますが、データをチェックして変更する必要がある場合は、ループを作成し、他の関数を使用してデータを変更したり、SQLを変更したりするために必要なチェックを行うように変更します。あなたはQoQで創造的になることができるかもしれませんが、正直なところ、あなたがそれを見ているならば、元のクエリでそれを行うかもしれません。

関連する問題