- ベストアンサー
以下の場合のSQL文の書き方教えてください。
2つのテーブルÅ、Bに同じ項目名(NYUSYA_DATE)が存在していて、 通常はAからデータを取得し、取得した値がNULLの場合は、Bから取得します。 これを1つのSQLで出来ますか? 今は、両方取得しておいて、IF文で判定しようとしています。 テーブルA SYAIN_ID (NOT NULL) NYUSYA_DATE テーブルB GROUP_ID (NOT NULL) SYAIN_ID NYUSYA_DATE
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
AS はテーブルとかフィールド等に名前をつけることができます。なくてもいいです。 isnullはこの場合、 A.NYUSYA_DATEがNULLの場合、B.NYUSYA_DATEを返します。 A.NYUSYA_DATEがNULLでない場合、A.NYUSYA_DATEを返します。 できませんでしたか?
その他の回答 (3)
- Selfishness
- ベストアンサー率29% (29/99)
そっか、何を使っているかを考えていませんでした。 私の物はSQL Serverです。 オラクルの場合は「isnull」が「nvl」になりますね。 失礼しました。
- Kuppycat
- ベストアンサー率50% (109/216)
オラクルの場合 Select NVL(A.NYUSYA_DATE, B.NYUSYA_DATE) as NYUSYA_DATE From テーブルA A, テーブルB B Where A.SYAIN_ID = B.SYAIN_ID(+) SQL Serverの場合 Select IsNull(A.NYUSYA_DATE, B.NYUSYA_DATE) as NYU_DATE From テーブルA as A Left join テーブルB as B on A.SYAIN_ID = B.SYAIN_ID AS (任意名称) で別名をつけます。
- Selfishness
- ベストアンサー率29% (29/99)
こんなんでいかかでしょ? ========================================== select isnull(A.NYUSYA_DATE,B.NYUSYA_DATE) AS NYUSYA_DATE from テーブルA AS A, テーブルB AS B where A.SYAIN_ID=B.SYAIN_ID ==========================================
補足
>select >isnull(A.NYUSYA_DATE,B.NYUSYA_DATE) AS NYUSYA_DATE >from >テーブルA AS A, >テーブルB AS B >where >A.SYAIN_ID=B.SYAIN_ID Selfishnessさん回答有難うございます。 すいません、AS はどんな使われ方をするのでしょうか? ちなみに優先順位はÅテーブルの方で、 無かったらBから取得するようにしたいのですが、 これで出来ますか?
お礼
無事できました! 有難うございます。