私のジレンマは、このようになります比較しながら同様の行をマージ:SQL:バージョン
FileName Version Type Doc_Number Owner Request Date
1. ECN 0001 3 ECN NULL NULL NULL NULL
2. ECN 0001 1 NULL NULL NULL NULL 2017-08-14
3. ECN 0001 2 NULL NULL NULL NULL 08/14/17
4. ECN 0001 2 NULL NULL NULL NULL NULL
5. ECN 0001 2 NULL NULL JOHN NULL NULL
6. ECN 0001 1 NULL Form NULL NULL NULL
7. ECN 0001 2 NULL 0001 NULL NULL NULL
8. ECN 0002 ect...
N. ECN 9999 ect...
ファイルのリストをそのソリューションは、ファイル名の変更を考慮に入れる必要があります長いです、私は1つの行に重複したファイル名を凝縮したいです。場合によっては、同じファイルの行または列に複数の値が含まれることがあります。
上記のように、1つのバージョンにつき最大1つの列値しかないことがルールです。たとえば、ECN 0001バージョン1の日付は1つのみですが、バージョン2の別の日付が表示されます。バージョン3は最新のバージョンですが、v2からv3への唯一の変更はタイプでした。
は、私は新しいリストは次のようになりたい: 主なアイデアは、新しいリストが最新のバージョンからのすべての情報をファイルごとに1つの行に凝縮されていること FileName LatestVersion Type Doc_Number Owner Request Date
1. ECN 0001 3 ECN 0001 JOHN NULL 08/14/17
2. ECN 0002 6 PGT 0002 BOB JAKE 08/14/17
3. ECN 0003 2 ECN 0003 KYLE BOB 08/14/17
4. ECN 0004 4 ECN 0001 TOM BILL 08/14/17
5. ECN 0005 8 ECN 0001 KATE KELVIN 08/14/17
6. ECN 0006 2 ECN 0001 STEVE JOHN 08/14/17
7. ECN 0007 5 ECN 0001 JOHN STEVE 08/14/17
n. ECN 9999 99 EXR 9999 CHERYL CARL 09/14/26
、それはすることができることをいくつかの値バージョン1または2以降は変更されていないため、最新バージョンのテーブルには表示されます。ファイルごとに複数の値が存在する場合は、最新の値を使用する必要があります。また、ECN 0001リクエストの場合のように、どのバージョンにも情報が存在しない可能性があります。
私はmaxを使うと考えましたが、最新の値が必ずしも最大の値ではないため、古いデータを切り捨てるときに、データのバージョン番号を考慮する必要があります。それは場合に役立ちます
これは私の現在のコードです:
はselect FileName, Version,
(case when VariableName = 'Document Type' then ValueText end) as Type,
(case when VariableName = 'Document Number' then ValueText end) as Doc_Number,
(case when VariableName = 'Owner' then ValueText end) as Owner,
(case when VariableName = 'Requested By' then ValueText end) as Request,
(case when VariableName = 'Date Written' then ValueText end) as Date
FROM
(
SELECT Documents.Filename,VariableValue.ValueText,VariableValue.Version,Variable.VariableName
FROM Documents INNER JOIN VariableValue ON Documents.DocumentID = VariableValue.DocumentID INNER JOIN Variable ON VariableValue.VariableID = Variable.VariableID
WHERE Filename LIKE 'ECN_____.pdf' AND Filename <> 'ECN Form.PDF'
) t
Order by Filename
どのようなSQLのフレーバーを使用していますか? – scsimon
使用しているデータベースで質問にタグを付けてください。 –
こんにちは、SQL Server 12.0.5203.0でタグ付けしようとしました – Jsaville