我有一個包含大約7列的表,其中包含一個包含XML的字段。每個唯一一組customer_id,product_id和max的需要字段table_id
有多個客戶ID,每個客戶ID可能有多個產品ID。
對於客戶ID和產品ID的每個唯一組合,都有多個表ID(稱爲edw_policy_data_id)。
我需要獲取與客戶ID和產品實例ID的每個唯一組合對應的max edw_policy_data_id的XML。
最後,我需要限制日期範圍內的內部查詢。
我目前的查詢看起來像這樣;我現在返回的列數多於我現在需要的數量,並排序它們以調試查詢。我還沒能用max()做任何有意義的事情。
select edw_policy_data_id, e.customer_id, e.product_instance_id, policy_data_xml
FROM [DB].[dbo].[EDW_POLICY_DATA] e
inner join (SELECT distinct customer_id, product_instance_id
FROM [DB].[dbo].[EDW_POLICY_DATA]
where created_date > '12/1/2011'
and created_date < '12/27/2011 17:16:00') d
on e.customer_id = d.customer_id and e.product_instance_id = d.product_instance_id
order by customer_id, product_instance_id, edw_policy_data_id
結果是這個樣子:
edw_policy_data_id e.customer_id e.product_instance_id policy_data_xml
1 100 200 xml
2 100 200 xml
3 100 201 xml
4 101 203 xml
5 101 203 xml
我需要的結果看起來是這樣的調試 - 注意,只爲每個唯一CUSTOMER_ID/product_instance_id組合最大edw_policy_data_id存在。
edw_policy_data_id e.customer_id e.product_instance_id policy_data_xml
2 100 200 xml
3 100 201 xml
5 101 203 xml
最後,我要的是每個MAX(edw_policy_id)的XML/CUSTOMER_ID/product_instance_ID組合。
我看着this question的迴應:沒有快樂。
使用窗口功能,如我的回答看出,沒有理由加入或團體或MAX(),然後 – cairnz 2011-12-28 15:04:26
但是,如果你想要做的是,短期的版本是選擇tbl.a,tbl.b,tbl.c from tbl inner join(select a,b,max(c)as c from tbl where ...)as tbl2 on tbl.a = tbl2.a and tbl.b = tbl2 .b和tbl.c = tbl2.c - 使用此命令,可以獲得c(edw_policy_data_id)最大值的表的col abc的完整內容。 – cairnz 2011-12-28 21:40:14