[解決済み] MINやMAXにNULL値を含めるにはどうしたらいいですか?
2023-07-10 22:10:27
質問
私はタイムスパンデータを保存するテーブルを持っています。
ID INT NOT NULL IDENTITY(1,1)
RecordID INT NOT NULL
StartDate DATE NOT NULL
EndDate DATE NULL
そして、私は各レコードIDの開始日と終了日、つまり最小のStartDateと最大のEndDateをワークアウトしようとしています。StartDateはnullableではないので、私はこれについて心配する必要はありませんが、私はこれが現在実行中の期間であることを示すためにMAX(EndDate)を必要としています。
EndDateのNULL値を維持し、これを最大値として扱うことが重要です。
MINとMAXがNULLを無視するという問題を強調する最も単純な試み(下記)は動作しません(ソースはこちら)。 http://technet.microsoft.com/en-us/library/ms179916.aspx ).
SELECT recordid, MIN(startdate), MAX(enddate) FROM tmp GROUP BY recordid
基本的な設定を済ませたSQL Fiddleを作成しました。
http://sqlfiddle.com/#!3/b0a75
SQLFiddleで与えられたデータから次の結果を得るために、どのようにSQL Server 2008を自分の意志に従わせることができるでしょうか?
RecordId Start End
1 2009-06-19 NULL
2 2012-05-06 NULL
3 2013-01-25 NULL
4 2004-05-06 2009-12-01
どのように解決するのですか?
少し醜いですが
NULL
には特別な意味があるので、これが私が考える最もきれいな方法です。
SELECT recordid, MIN(startdate),
CASE WHEN MAX(CASE WHEN enddate IS NULL THEN 1 ELSE 0 END) = 0
THEN MAX(enddate)
END
FROM tmp GROUP BY recordid
つまり、ある行に
NULL
がある場合、それを強制的に答えにしたいのです。を含む行がない場合のみ
NULL
を含まない場合のみ
MIN
(または
MAX
).
関連
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] 重複した行を削除するにはどうすればよいですか?
-
[解決済み] SQL Serverでシングルクォートをエスケープするにはどうすればよいですか?
-
[解決済み] T-SQLを使用して外部キー制約を一時的に無効にするにはどうすればよいですか?
-
[解決済み] SQL Serverでテーブルからカラム名を取得するにはどうすればよいですか?
-
[解決済み] SQL Serverで、指定したテーブルを参照しているすべての外部キーを一覧表示するにはどうすればよいですか?
-
[解決済み] MYSQLでMAX(列の値)、PARTITIONで別の列で行を選択するにはどうすればよいですか?
-
[解決済み] SQL Serverには、.NETのMath.Maxのような2つの値を取るMax関数はありますか?
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
executeQuery()ソリューションでデータ操作文を発行できない。
-
[解決済み] SQL Serverで実行中の合計を計算する
-
[解決済み] 指定されたスキーマにテーブルが存在するかどうかを確認する方法
-
[解決済み] 1つのPostgreSQLクエリで複数のWITHステートメントを使用するには?
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] 複数の列でgroup byを使用する
-
[解決済み] SQL ServerにおけるINSERT OR UPDATEに関する解決策
-
[解決済み] DISTINCTでCOUNT(*)を選択する
-
[解決済み] SQL/mysql - Select distinct/UNIQUE but return all column?
-
[解決済み] Selectステートメントで特定のフィールドの重複を検索する