2017-08-21 19 views
0

私はSQLに新しいので、noobの質問にお詫び申し上げます。私は他の記事を検索しましたが、私の問題でうまくいくものを見つけることができませんでした。異なるテーブルから2つのSQLクエリを結合する

これは私たちのDMSへのクエリを推測しているかもしれないので、基本的に2つのテーブル(DOCMASTER、DOSHISTORY)本質的に、ユーザは、以下の情報を有する特定の文書番号セットに関する文書(これらはテンプレート文書)を求めている。 は - 日付 を作成しました - 最終アクセス - 最終更新 - ドキュメント数(ユニークID)

私は、以下の2つのクエリと上記の情報を取得することができます。ベースのこれらのクエリに参加するための最良の方法だろう何DATE +(DOCMASTERテーブルから)最終更新日時

SELECT [DOCNAME],[DOCNUM],[EDITWHEN] as 'last edited date',[ENTRYWHEN] as 'created date' 
FROM [Knowledge_Prod].[MHGROUP].[DOCMASTER] 
where DOCNUM in ('10098776', '1355264') 

(DOCHISTORYテーブルから)最後にアクセスDATE

SELECT DOCNUM, MAX (ACTIVITY_DATETIME) as 'last accessed date' 
FROM [Knowledge_Prod].[MHGROUP].[DOCHISTORY] 
WHERE ACTIVITY in ('View','Create','Copy', 'Checkin', 'Checkout','Print','Mail') 
    and DOCNUM in ('10098776', '1355264') 
Group by DOCNUM 

を作成し

結果をまとめてコンパイルすると、DOCNUM上に表示されます。

DOCNUM - 最後にアクセスした日付 - 最後に編集した日時 - 作成日

ありがとう事前にご支援のため、これは最後の数時間のために私の魂を粉砕されています。また私はすべての私の質問のためにSMSSを使用しています。

答えて

2

我々がテストするためのテストデータを持っており、以下の

;with cte 
as 
(
SELECT [DOCNAME],[DOCNUM],[EDITWHEN] as 'last edited date',[ENTRYWHEN] as 'created date' 
    FROM [Knowledge_Prod].[MHGROUP].[DOCMASTER] 
    where DOCNUM in ('10098776', '1355264') 
) 
,cte1 as 
(
SELECT DOCNUM, MAX (ACTIVITY_DATETIME) as 'last accessed date' 
     FROM [Knowledge_Prod].[MHGROUP].[DOCHISTORY] 
     WHERE ACTIVITY in ('View','Create','Copy', 'Checkin', 'Checkout','Print','Mail') and DOCNUM in ('10098776', '1355264') 
     Group by DOCNUM) 
select * from cte c join cte1 c1 
on c1.docnum=c.docnum 
+0

1つの最も安全な方法ですしていないので、あなたは伝説です...!私はそれが華麗であるようにこれをどのようにしたかを調べなければならないでしょう。迅速な対応を感謝します! - 最小時間が経過するとすぐに受け入れます。ありがとう、束 –

+0

私はあなたを助けました、私は将来の質問のためにこのリンクを見て、それをテストすることができますまた、あなたもupvotes得ることができます:https://spaghettidba.com/2015/04/24/how -to-post-at-sql-on-a-public-forum/ – TheGameiswar

+1

ヒントのための素晴らしいおかげで!私は私の次の質問に実装することを確認します:) –

0
SELECT [DOCNAME],[DOCNUM],[EDITWHEN] as 'last edited date',[ENTRYWHEN] as 'created date', MAX (ACTIVITY_DATETIME) as 'last accessed date' 
FROM [Knowledge_Prod].[MHGROUP].[DOCMASTER] dm 
    INNER JOIN [Knowledge_Prod].[MHGROUP].[DOCHISTORY] dh 
    ON dm.DOCNUM = dh.DOCNUM 
WHERE dm.DOCNUM in ('10098776', '1355264') 
AND dh.ACTIVITY in ('View','Create','Copy', 'Checkin', 'Checkout','Print','Mail') 
GROUP BY [DOCNAME],[DOCNUM],[EDITWHEN],[ENTRYWHEN] 
関連する問題