これは長いかもしれませんが、私は前に謝罪して、自分自身を説明しようとする "言葉"を得ることができます。私が必要とするほど簡潔であることを学んでいない。SQL Serverクエリのヘルプで、テーブルレイアウトの混乱を避けて行を引き出す
私の問題は、自分の経験が不足していることと、不十分にレイアウトされたテーブルだと私は信じていることです。私はテーブルから特定の列を取り出し、その要素の1つに埋め込まれた日付の違いについて報告する必要があります。 (下記のサンプルを参照)。
私の会社がヘルプデスクで使用しているアプリケーションの一部としてテーブルを再編成することはできないので、私はそれがどのように「組織化されているか」とついています。
テーブルの構造、基本的にこのです:すべての列の型が異なる長さのVARCHAR()され、データベースは、Windows Server 2003
管理が時間差を知りたいtickID | tickGen | tickAudit
----------------------------------
124567 | 1 | 2011-07-22 08:00:00 joeuser Open Ticket
124567 | 2 | 2011-07-22 08:00:00 joeuser Open Ticket Not Assigned
124567 | 3 | 2011-07-22 08:00:00 joeuser Open Ticket Priority Urgent
124567 | 4 | 2011-07-22 09:00:00 freduser Open Ticket Add Assignee
にSQL Server 2005で「joeuser」がチケットを「未割り当て」にしたときから、「freduser」がチケットに譲受人を追加したときのtickAudit列からの「タイムスタンプ」。この例では
私は私がより良いかもしれないと考えている「作品の並べ替え」が、これらのクエリを思い付いた:
declare @startTime datetime
declare @endTime datetime
declare @mrid varchar(6)
set @mrid = '124567'
select @startTime = cast(substring(tickAudit,1,19) as datetime)
from tickHistory where tickID = @tickID and tickAudit like '%Not Assigned'
select @endTime = cast(substring(tickAudit,1,19) as datetime)
from tickHistory where tickID = @tickID and tickAudit like '%Add Assignee'
select @mrid as 'ticket', @startTime as 'startTime',
@endTime as 'endTime', datediff(mi,@startTime,@endTime) as 'diff'
クエリはしかし、「チケット」はそれ複数のエントリを持っている問題を扱うことができません割り当てられた後、この例のように割り当てられていませんでした:チケットを編集した。ここ
tickID | tickGen | tickAudit
----------------------------------
124568 | 1 | 2011-07-22 08:00:00 joeuser Open Ticket
124568 | 2 | 2011-07-22 08:00:00 joeuser Open Ticket Not Assigned
124568 | 3 | 2011-07-22 08:00:00 joeuser Open Ticket Priority Urgent
124568 | 4 | 2011-07-22 09:00:00 freduser Open Ticket Add Assignee
124568 | 5 | 2011-07-22 11:00:00 freduser Open Ticket Not Assigned
124568 | 6 | 2011-07-22 12:00:00 bobuser Open Ticket Priority Low
124568 | 7 | 2011-07-22 12:00:00 bobuser Open Ticket Add Assignee
「freduser」と今では「割り当てられていない」され、再び、2時間後に「bobuserは、」それを編集しており、チケットを割り当て。だから私は報告する必要がある2つのタイムスタンプがあります。私のクエリは、tickGen#5とtickGen#7の違いだけを返します。これは、tickGen#2とtickGen#4の違いを無視します。または、返された数にかかわらず、最後に有効な一致がクエリに表示されていると思われます。
これは私が立ち往生する場所です。上記の例では、誰かが私にいくつかの提案や状況を説明するための例を与えてくれることを願っています。ここで