簡體   English   中英

如何根據另一個表中的值將一個不同表中的特定值添加到行中的列?

[英]How do I add specific values from one different table to columns in a row based off of values in another table?

在SQL Server中,我有2個看起來像這樣的表:

TEST SCRIPT    'a collection of test scripts'
(PK)
ID   Description   Count
------------------------
A12  Proj/Num/Dev  12
B34  Gone/Tri/Tel  43
C56  Geff/Ben/Dan  03

SCRIPT HISTORY 'the history of the aforementioned scripts'
(FK)      (PK)
ScriptID  ID   Machine    Date    Time    Passes
----------------------------------
A12       01   DEV012     6/26/15 16:54   4
A12       02   DEV596     6/28/15 13:12   9
A12       03   COM199     3/12/14 14:22   10
B34       04   COM199     6/30/13 15:45   12
B34       05   DEV012     6/30/15 13:13   14
B34       06   DEV444     6/12/15 11:14   14
C56       07   COM321     6/29/14 02:19   12
C56       08   ANS042     6/24/14 20:10   18
C56       09   COM432     6/30/15 12:24   4
C56       10   DEV444     4/20/12 23:55   2

在單個查詢中,我將如何編寫一條只對TEST SCRIPT中的每個DISTINCT腳本采用一個條目的select語句,並將其與SCRIPT HISTORY中最近TOP 1個最新運行時中的值配對?

例如,上述示例表的解決方案是:

OUTPUT
ScriptID    ID    Machine    Date    Time    Passes
---------------------------------------------------
A12         02    DEV596     6/28/15 13:12   9
B34         05    DEV012     6/30/15 13:13   14
C56         09    COM432     6/30/15 12:24   4

描述問題的方式幾乎與cross apply直接:

select h.*
from testscript ts cross apply
     (select top 1 h.*
      from history h
      where h.scriptid = ts.id
      order by h.date desc, h.time desc
     ) h;

請嘗試這樣的事情:

    select * 
    from SCRIPT SCR
         left join (select MAX(SCRIPT_HISTORY.Date) as Date, SCRIPT_HISTORY.ScriptID 
                    from SCRIPT_HISTORY 
                    group by SCRIPT_HISTORY.ScriptID 
                    ) SH on SCR.ID = SH.ScriptID 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM