トランザクションレコードをタイプ 'C'で、レコードのポストタイムがタイプ ' W 'であり、口座番号と郵便日付は同じです。私はif/thenを作成することに苦しんでいます。タイプ 'C'のための郵便配達時間= 'W'タイプの郵便配達時間。私は前にこれらのタイプをしましたが、レコード項目が1つしかない同じフィールドでは決してしませんでした。同じフィールドに複数の基準がある場合のSQL SSMS
答えて
、= 'W' JOINS
。 relational data sets
とSARGs
と考えてください。
テーブル構造(非常に役立つ)をまだ私たちに与えていないのに、このソリューションはあなたを正しい方向に導くのに役立ちます。以下は、それ自体にcarnality
がMであるTRANSACTIONS
のFACT
テーブルを前提としていますM
SELECT TOP 1000 A.ACTIONCODE, A.TRAN_RECORD --, any other needed columns
FROM TRANSACTIONS A
INNER JOIN (SELECT ACTIONCODE, POSTTIME, ACCOUNT_NUM, POSTDATE
FROM TRANSACTIONS
WHERE ACTIONCODE = 'W') B ON A.ACCOUNT_NUM = B.ACCOUNT_NUM
AND A.POSTDATE = B.POSTDATE
WHERE A.ACTIONCODE = 'C'
AND A.POSTTIME >= B.POSTTIME
更新日:私は誤っ列の正確な数を含むことを忘れてしまいました。 INNER JOINで使用する列と同じ列(または気にしない場合は*)を必ず指定してください。
それにかかわらず、私たちは私たちが使用する結果や私たちのクエリで見る結果を返すだけで、クエリを最適化します。
これは私が元々持っていたものですが、結果が出てこないSSMSで乱れてしまいました。基本的には、 'C'タイプのレコードが返される必要があります。 'W'タイプのレコードがある場合、 'C'よりも郵便料金が低くなりますが、レコードの勘定コードと郵便物の日付は同じです。 posttime、postdate、type、およびnumberはすべてテーブルのフィールドです。
SELECT *取引
FROMWHERE ACTIONCODE = 'C' AND POSTTIME> = POSTTIMEとACTIONCODEあなたはを通して達成することができ記述する私が正しくあなたを理解していれば
同じ列を参照するため、クエリが最も効率的なインデックスを使用できないことがあります(つまり、インデックス/テーブルのスキャンが行われる可能性があります)。 また、これは質問に付随しているはずでした。 xD –
すぐに返されたはずです。 1つの行に複数の値を設定する方法はありません。 – shawnt00
これはexists
を使用する典型的な方法のようになります。
select * from transactions t
where t.actioncode = 'C' and exists (
select 1 from transactions t2
where t2.account_num = t.account_num and t2.postdate = t1.postdate
and t2.actioncode = 'W'
and t2.posttime < t1.posttime
)
- 1. SQL Serverで条件が複数ある場合の同じ選択基準
- 2. 同じセルにExcelの複数の基準があります。
- 3. 複数のグループに同じ値がある場合のケース
- 4. vlookup複数基準同じ列
- 5. Perl CGI、複数のフォームと複数のサブミットボタンが同じページにある場合
- 6. T-SQL:複数の結合を使用する同じフィールド
- 7. フィールド名が同じ場合のSQL結合
- 8. 複数のcase文が同じ論理である場合
- 9. SQLクエリ - 同じフィールドでの複数の結合
- 10. SQL Select同じテーブル複数の合計
- 11. MS SQL:複数行の基準にクエリ
- 12. データベースに同じ値がある場合に複数のIDを返します
- 13. SQLクエリ:複数の列で同じレコードを数えますが、別の列がDistinctである場合
- 14. SSMSで同じクエリを同じサーバー内の複数のデータベースで実行する
- 15. VBA 2つの列に2つの基準がある場合
- 16. Django Rest Framework同じオブジェクトに複数のビューセットとルータがある場合
- 17. 同じフィールドが2つある場合insert else update
- 18. 数値からSQLへの数値が同じ場合
- 19. SQL集計、複数のグループ化基準と日付基準
- 20. 同じDB列に複数のフィールドがあります
- 21. 複数の一致基準でのSQL結合
- 22. 異なるフィールドに基づいて同じフィールドを2回合計します。基準
- 23. Yii2の同じフィールドにある複数のキーワードを検索
- 24. ケースと同じフィールドの場合
- 25. 日付が同じ年と同じ年である場合、T-SQLは重複するレコードを見つける
- 26. SQL:同じテーブルに複数の一致がありますか?
- 27. 同じ場所に複数のマーカーがあります - MarkerClusterer
- 28. 同じテーブルの複数の合計列のSQL外部結合
- 29. 同じ準備済みの文、複数のデータベース、同じスキーマ
- 30. SQL Update複数のテーブルを結合する(フィールドが存在する場合)
あなたは、いくつかのコンテキストを追加しようとしましたいくつかのコード/ SQLクエリを追加してみてもらえますか? – FishStix
いくつかのサンプルデータと望ましい結果が最も役立ちます –
最初の問題は、リレーショナルデータがあることと、今説明したものの大半がON述語とWHEREの 'predicate'節に属していることです。 –