根据其他行获取数据

时间:2015-04-09 21:35:39

标签: sql sql-server-2012

Example

当一行ID无效时,它不会显示cc_type,但我需要获取那些无效行的cc_type。

CASE WHEN CC_TYPE = 'Credit' OR Voided = 'Yes' THEN 'Credit'
     WHEN CC_TYPE = 'Debit OR Voided = 'Yes' THEN 'Debit'
END

显然,这种方法不起作用。第3行将被视为信用,因为它满足无效的条件='是'。

我的逻辑是,如果ID和Name相同,则将CC_Type值附加到Voided行,但我不知道如何使其工作。

由于

3 个答案:

答案 0 :(得分:1)

这对我有用:

create table result as
  select a.id,a.name,b.cc_type,a.voided
from
 (select id, name,voided from table1) as a
inner join
 (select distinct id, cc_type from table1 where cc_type  ne "") as b
on a.id = b.id;
quit;

答案 1 :(得分:1)

您可以使用窗口功能:

SELECT
  id,
  Name,
  MAX(CC_Type) OVER (PARTITION BY id, name) AS CC_Type,
  Voided
FROM
  yourtable

答案 2 :(得分:1)

看起来您想要更新表格。这里的关键思想是你可以使用自己作为源来更新表。

UPDATE table1
SET table1.CC_Type = s.CC_Type
FROM table1 AS s
WHERE s.id = table1.id 
  AND s.name = table1.name 
  AND table1.Voided = 'Yes' 
  AND s.CC_Type <> ''