在SQL Server中查找关联

时间:2013-01-16 20:11:31

标签: sql sql-server-2008

只想知道在SQL Server中是否可以完全执行以下操作

我有一个包含3列的表格 - SENTENCE ID (PK)SENTENCE(任意长度的字符串),PATTERNS(这些是2个或3个字的模式,可在{{{ 1}})。

我需要找到所有不同SENTENCE之间的相关性。

如果我在外部(使用python和ODBC)执行此操作,我需要执行以下步骤

对于每个不同的PATTERN

  1. 获取PATTERN的计数
  2. 查找具有该PATTERN
  3. 的所有句子ID
  4. 获取上述句子ID中出现的所有PATTERNS的计数
  5. 在步骤3中将当前PATTERN及其计数(作为列)附加到表中。
  6. 继续将上表作为行附加到结果表
  7. 下一步

1 个答案:

答案 0 :(得分:0)

让我假设PATTERN遵循like表达式的形式。并且,您只想计算一次句子的模式。

如果是这样,您可以执行以下操作。获取所有句子和模式之间的匹配:

with sp as (
       select s.sentenceID, p.pattern, count(*) over (partition by p.pattern) as NumSentences
       from Sentences s join
            Patterns p
            on s.sentence like p.pattern
     )
select sp1.pattern, sp2.pattern,
       sp1.pattern as Pattern1Count, sp2.pattern as Pattern2Count,
       count(*) as BothCount
from sp sp1 join
     sp sp2
     on sp1.pattern < sp2.pattern    -- <= if you want counts for a single pattern
group by sp1.pattern, sp2.pattern

您没有明确说出您想要的输出类型,但这应该足够了。

因此,通过一些合理的假设,您可以在SQL中执行此操作。

相关问题