【发布时间】:2013-10-07 17:11:27
【问题描述】:
我有一个大型的公司配对数据集,其中包含他们的资助风险投资家,我想检查这些配对中是否只有一个合伙人由 VC 资助(如果是,列 OVC=1,否则为 0),两个合伙人都由至少一个 VC(如果是,列 BVB=1)或两个合作伙伴是否由同一个 VC 资助(如果是,列 CVC=1)。目前,我的表格有列 Partner11 及其资助 VC VC11 到 VC17 和 Partner22 列及其资助 VC21 到 VC27。为了能够在一行中说明标题,我在下表中省略了 VC14-VC17 和 VC24-27。
Partner11 | VC11 | VC12 | VC13 | Partner22 | VC21 | VC22 | VC23 | OVB | BVB | CVC
FirmA | | | | FirmB | | | | 0 | 0 | 0
FirmC | Moa | | | FirmD | | | | 1 | 0 | 0
FirmE | Moa | Fred | Bob | FirmF | | | | 1 | 0 | 0
FirmG | | | | FirmH | Bob | Zoe | Jet | 1 | 0 | 0
FirmE | Moa | | | FirmF | Jet | | | 0 | 1 | 0
FirmG | Moa | Fred | Bob | FirmH | Jet | Zoe | | 0 | 1 | 0
FirmG | Moa | Fred | Bob | FirmH | Bob | Zoe | Jet | 0 | 0 | 1
FirmG | Jet | Bob | Fred | FirmH | Bob | Zoe | Jet | 0 | 0 | 1
如果没有合作伙伴获得风投支持,OVB、BVB 和 CVC 的值为 0(见第 1 行)。
要在 OVB 列中插入 0 或 1,代码应检查对中的一个伙伴是否在 partner11 的列 VC11-VC17 或(不包括)在 partner22 的列 VC21-VC27 中具有至少一个值(见第 2 至 4 行)。
要在 BVB 列中插入 0 或 1,代码应检查两个伙伴是否至少在其 VC 列之一中具有值(对于 VC11-VC17 中的 partner11,对于 VC21-VC27 中的 partner22)(参见行5+6)。
要在CVC列中插入0或1,代码需要比较伙伴的VC列的值,也就是说VC11应该与VC21、VC22、VC23、VC24、VC25、VC26和VC27进行比较; VC12 与 VC21、VC22、VC23、VC24、VC25、VC26、VC27 等(见第 7+8 行)。
我非常感谢任何帮助解决这个问题。
非常感谢您。
【问题讨论】:
-
神圣的非标准化表蝙蝠侠!
-
我之前在 Excel 中使用 IF 语句对其进行了编程,但后来我的数据表变得太大,我不得不切换到 SQL。因此,该表可能是如此非规范化。对不起!
-
你确实需要规范你的数据结构——除非有一些(尚不明显)VC11 和 VC12 不同的原因。如果您有应该具有可比性的值,那么它们应该在 same 列中(在单独的行中)
-
是的 - 我同意......现在停下来,让你的表格结构正确。从现在开始,这将为您省去麻烦。
标签: sql sql-server compare case