セットアップ
SQL Server DBを使用して、製造環境での本番環境のさまざまなケースを追跡しています。データベースには2つのテーブルがあります。
- ステータステーブル:これは、ケースのステータスを表す整数コードを含む列の1つで、これらのケースのステータスを追跡します。コードが0より大きいケースはすべて「本番環境」であり、コードが0以下のケースは「完全」または「キャンセル」されます。
- ログテーブル:これは、特定のケースにどのような変更が発生したか、およびそれらの変更がいつ発生したかを追跡します。「what」の側面は、文字列とコードの両方としてキャプチャされます。「いつ」は日時フィールドです。
問題/タスク/質問
本番環境にあるすべてのケースと、過去2日以内に完了またはキャンセルされたすべてのケースを照会したいと思います。ログには、日時の列と、ケースのキャンセルまたは完了の両方に固有のコードがあります。クエリはJOIN
、これらのコードのいずれかを持ち、現在から48時間以内の日時を持つログからのケースである可能性が高いと思います。しかし、私はこれをどのように行うのかよくわかりません。私のクエリの最初の部分(本番環境にあるケースを取得するため)は次のとおりです。
SELECT * FROM test.dbo.status WHERE status > 0
どんな助けでも大歓迎です。前もって感謝します!
更新 明確にするために、2つのこと:
IDなどだけでなく、上記の条件に一致するレコードのステータステーブルのすべての列をクエリで返すようにします。
テーブル構造:
CREATE TABLE [dbo].[status]( [serial] [varchar](10) NOT NULL, [type] [varchar](50) NULL, [commit_date] [date] NULL, [sent_to_prod] [date] NULL, [target] [date] NULL, [sent_to_mfg] [date] NULL, [status] [int] NULL, [notes] [bit] NULL, [hold] [bit] NULL, [canceled] [bit] NULL, [priority] [bit] NULL, [vendors] [varchar](150) NULL, [rework] [varchar](50) NULL, [created_on] [datetime] NULL, [modified_on] [datetime] NULL ) CREATE TABLE [dbo].[log]( [serial] [varchar](13) NOT NULL, [action] [varchar](200) NOT NULL, [who] [varchar](80) NOT NULL, [time] [datetime] NOT NULL, [code] [varchar](20) NOT NULL )