- ベストアンサー
SQLで数日経過したデータをNULLに変換する処理とは?
- SQLでテーブルのある項目に入っている日付がSYSDATEから数日経過した場合、NULLに変換する処理をしたいです。具体的には、SYSDATEから7日以上経過したデータをNULLにしたいと考えています。また、処理の中で土曜日と日曜日を考慮する必要もあります。
- このような処理は単純なSQL文だけでは実現できません。土曜日だった場合には9日経過するまでデータをNULLにせず、日曜日だった場合には8日経過するまでデータをNULLにしないような処理を追加する必要があります。
- また、企業の休み(お盆、正月、祝日など)を考慮する場合には、休みのデータを持ったテーブルを作成する方が効率的です。ただし、SQL単文でも休みを考慮することは可能ですが、処理が煩雑になる可能性があります。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- SQLで特定データがNULLなら別データを引用?
SQL文で“ある箇所のデータがNULLだったら指定した場所からデータを引用する”ということをしたいのですがどのように記述すれば良いのでしょうか? 画像にあるようなテーブル構成だと仮定します。 やりたいこととして select A.XA, A.YA, A.ZA + M.M2, B.XB, B.YB B.ZB from A, B, M where A.XA = B.XB and A.YA = B.YB and B.ZB = M.M1 ; というような書き方です。 ちなみにM2のデータ型は「Interval Day?」とかいうような型らしい?です。名前忘れましたが・・・ このイラストから見るとマスターテーブルの“F5”のM2データがNULLです。 NULLデータは日付の加算ができなくなるので・・・対処したいのです。 このSQL文に加える処理として、 「もし、マスターテーブルのF5がNULLの場合のみG6のM2を参照する」 という構文を追加したいのですが・・・ そのような記述はSQL内で可能なのでしょうか?
- ベストアンサー
- PostgreSQL
- 「C#」SQL実行でのNULL値の処理方法
質問は下記のとおりです。よろしくお願いいたします。 SqlCommand s_h1 = new SqlCommand("select sum(人数) from データ where 日付 >= '2008-04-01 00:00:00' and 日付 <= '2008-04-30 23:59:59', con); int h1 = (int)s_h1.ExecuteScalar(); で実行すると「指定されたキャストは有効ではありません。」とエラーが出ます。SQLで実行するとデータが無いため、値は「NULL」となっているのでintにキャストが出来ないというのは理解しました。 出来れば「NULL」の場合は「0」という数字にしたいのですが、この処理方法をご教授お願いいたします。
- 締切済み
- その他(プログラミング・開発)
- テーブルの行を増やしたい・・・。
テーブルの行を増やし、 データを一年文作成したいのですが・・・。 CREATE TABLE CALENDAR_TBL( YYYYMMDD DATE NOT NULL, DayData NUMBER(3) NULL CONSTRAINT CALENDAR_TBL_PKEY PRIMARY KEY(YYYYMMDD)); このテーブルに、2005年のデータ365レコードを挿入したいのですが、 1つのINSERT文(SQL)で、できますでしょうか? (※PL/SQLは除きます。) ※不可能であれば、SELECT文(下記のように)を一年分用意してUNIONで作成するのですが、 これ以外に簡単にできないでしょうか? INSERT INTO CALENDAR_TBL ( (SELECT SYSDATE + 000, DayData FROM CALENDAR_TBL) UNION (SELECT SYSDATE + 001, DayData FROM CALENDAR_TBL) UNION (SELECT SYSDATE + 002, DayData FROM CALENDAR_TBL) UNION (SELECT SYSDATE + 003, DayData FROM CALENDAR_TBL) ・・・(省略)・・・ UNION (SELECT SYSDATE + 365, DayData FROM CALENDAR_TBL) )
- 締切済み
- Oracle
- null→数値にするには?
何度も質問してすみません。 NULLが格納されているフィールドに 「0」や「1」といった値を入れる為には どういうINSERT INTO文をPHP内で記述すれば宜しいでしょうか? pg_field_is_nullを使ってみたのですが イマイチ値を変更する事ができません。 また、SQL文で「NOT NULL制約」という言葉があるのを知ったのですが、 ALTER TABLE文でテーブルを作る時に、 各フィールドにはnullではなく、「0」を最初から格納したい場合は どういった記述をすれば宜しいでしょうか? 宜しくお願い致します。
- ベストアンサー
- PostgreSQL
- 副問い合わせでのNULLの抽出方法
SQLについての質問です。 副問い合わせを使用したとき、NULLのデータも含めて抽出したいの ですが、どうもうまくいきません。 やりたいことを説明すると、まず以下の構造のテーブルがあります テーブル コード 金額 -------------- 01 |100 01 |110 02 |090 02 |080 03 |200 04 |100 04 |150 05 |400 09 |350 null |100 null |200 集約後データ コード -------- 01 |<--- 1件目 02 |<--- 2件目 03 |<--- 3件目 04 |<--- 4件目 05 |<--- 5件目 09 |<--- 6件目 null |<--- 7件目 まず、テーブルをコードで集約します。集約された結果のデータで上位○件と いう制御をかけたい為、ROWNUMを使用しています。 ただ、実際にほしいデータは集約する前のデータの為、一度集約とROWNUMを使って 絞りこんだデータを副問い合わせしています。 但し、このときNULLが入ったコードも取得する必要があります。 現在のSQLはこんな感じです。 SELECT コード、SUM(金額) FROM テーブル WHERE コード IN ( SELECT コード FROM テーブル WHERE ROWNUM <= 10 GROUP BY コード ) GROUP BY コード このSQLだと、NULLが省かれてしまうため上位6件までしか抽出できません。 実際、NULLを含んだデータを副問い合わせで取得することは可能でしょうか? データベースはオラクル9iです。 宜しくお願いします。
- ベストアンサー
- その他(データベース)
- SQLでCSVを出力する際のNULLをどうにかしたい
いつもお世話になっております。 SQL(2005)でクエリ文を書いて、その結果をCSV保存する際、NULLの部分が空白ではなく「NULL」と出力されてしまいます。 今まではSQL(2000)で処理しており、その時はNULLはちゃんと空白になっていたのですが、SQL(2005)でも同様にNULLを空白にして出力する方法は無いでしょうか? なお、クエリ文で変換する方法は知っていますが、SQL(2000)の頃のクエリ文を全て直すのは骨なので、出来ればSQL(2005)の設定の方で何とかできればと考えています。 新しいDBとなり、戸惑っておりますので、皆様のお知恵を拝借いたしたく、よろしくお願い致します。
- 締切済み
- SQL Server
- insert時に日付のフィールドにnullを入れたい
テーブルに以下のフィールドがあります。 [No],[区分],[キーNo],[日付] このテーブルに日付のデータのない、以下のようなデータをインサートしたいのですが、 [No],[区分],[キーNo] 1 ,kbn1 , key1 strSQL1 = "INSERT INTO テーブル1" & " ([No],[区分],[キーNo],[日付])" _ & " VALUES ("1","kbn1","key1",NULL )" とするとエラーが出てしまいます。日付フィールドに何も入れないようにinsert文を書くにはどうしたらよいでしょうか。 すみません、アドバイス等宜しくお願いします。
- ベストアンサー
- Microsoft ASP
- SQL UPDATE 文 GroupByの値を更新したい
SQLの UPDATE文について質問させていただきます。 テーブル内のデータを日付と時間で GroupBy して カウント求めています。 求めた値(カウント)を、日付をキーにして同じテーブル内のフィールドに更新するSQLを作成したいと考えています。 GroupByして、カウントを求めることはできるのですが、 どうしても、UPDATE文を実行させることができません。 この処理は、SQLで行うことはできるのでしょうか? 下記に、UPDATE前と後のテーブルデータを記載しています。 日付 時刻 20090101 0:00 20090101 0:00 20090102 0:00 20090102 0:00 20090102 1:00 20090103 2:00 ↓ 日付 時刻 カウント 20090101 0:00 2 20090101 0:00 2 20090102 0:00 2 20090102 0:00 2 20090102 1:00 1 20090103 2:00 1 よろしくお願いいたします。
- ベストアンサー
- その他(データベース)
- Oracleのnull
ちょっとオラクルの検索文で困ったことがでてきました。 temp ------- col1 col2 col3 と言うようなテーブルがあります。 select col1 || '(' || col2 || ')' as col from temp; というような検索文を作成しましたが、テーブルのcol1とcol2が両方とも nullのデータは'()'となってしまいます。 col1とcol2は片方だけがnullと言うことはありません。 col1がnullの場合はcol2もnullです。 このような場合col1とcol2がnullの時は、結果のcolもnullにしたいのですが どうしたら出来るのでしょうか? また、無理なら無理と教えてください。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
- NULLを認識させる方法
Access2000を使用しています。 SQL文について質問です。 AとBの、内容が似たテーブル (フィールド項目は全く同じで入力内容が若干違います) それぞれの'数量'というフィールドを比べ、 内容が一致する件数を出力したいというのが目的です。 方法としてはCOUNTを使用し、 (A.数量)(B.数量)を結合&比較して一致しないレコードが NULL意外のものを件数に数えるようにしたいのです。 しかしIS NULLやIS NOT NULLを使うとTRUEかFALSEが 渡ってしまいます。 そこで質問なのですが、 COUNTを使って、 データが一致しないところがNULLであることを認識させ、 カウントからはずすには、どのようにSQLを作成したら よいでしょうか?
- ベストアンサー
- その他(データベース)
お礼
ありがとうございました。 大変参考になる意見ありがとうございました。