根据调查的是/否答案,我得到了一个由'1'和'0'填充的表。我被要求确定所有完全不同的答案,即对问题1,17,23,234和238回答“是”的人。 有许多列(500+),因此有很多答案排列。 任何想法?确定跨多列的行匹配
回答
您提到的具体数字有点令人困惑:它们只是一个例子吗?
您是否知道sql10中的DISTINCT
语句?那,并正确选择你想要的列,应该可以解决你的问题。
拜伦的答案(现在删除:它有一个选择截然不同,所有500列写出长手)是好的,并使用明确的列名称,这在许多情况下是很好的做法。如果你想缩短表示法,你的sql版本可能支持Select Distinct *
。
提到的数字只是一个例子。 我必须承认,我并不知道DISTINCT子句可以用于多列(新手爱好者 - 抱歉)。 – Leem 2010-08-11 07:02:37
雇用你的文本编辑器或使用您的数据库工具生成的列名的列表,
然后就做这个
select max(person_id)
from answer_table
group by (
a1,a2,a3,.... -- paste list of columns here.
)
having count(
a1,a2,a3....
) = 1; -- return only answer sets that have no duplicate
max(person_id)
会拉出一个人的身份证没有打破GROUP BY。
啊,我对不同答案的解释也包括不同的人,但这可能不正确。 – Tobiasopdenbrouw 2010-08-11 06:52:50
只有某些与填写表格的人有关的问题。我相信(和希望)这些将被赋予一个独特的ID。我可以忽略GROUP BY子句中的那些列名。 – Leem 2010-08-11 06:59:49
哦,是的哎呀...那里会有一个人的ID在那里不会有....好的,代码编辑。 – 2010-08-11 14:48:28
下面的语句假定您的输入是2,3和列名2Q,3Q ...
DECLARE @QueryInput VARCHAR(100)
DECLARE @Query nVARCHAR(4000)
SET @QueryInput = '2,3'
SET @QueryInput = REPLACE(@QueryInput,',','=1 AND Q')
SET @QueryInput = 'Q'[email protected]
SET @QueryInput = @QueryInput+'=1'
PRINT @QueryInput
SET @Query = 'SELECT * FROM answer_table WHERE '[email protected]
PRINT @Query
EXEC SP_EXECUTESQL @Query
- 1. 匹配跨多行
- 2. 索引匹配跨多列匹配
- 3. SQL,匹配的行跨多个表
- 4. 跨列匹配值
- 5. 索引匹配通配符或跨多列匹配
- 6. 跨表匹配行
- 7. 确定跨列的因子级别是否匹配R
- 8. 跨多个列搜索匹配
- 9. 跨多个表匹配值
- 10. 跨版本行匹配
- 11. 在跨多列的全文索引中匹配的列
- 12. 确定跨列的所有常见行
- 13. 返回跨多行的正则表达式匹配的行号
- 14. 匹配跨越多条线的标记
- 15. mySQL跨多个表的匹配
- 16. 匹配多列到多行子查询?
- 17. 多行匹配
- 18. 确定列归类不匹配
- 19. 上not_analyzed字符串数组精确匹配,跨多个领域
- 20. VLOOKUP多列匹配
- 21. 匹配多个列
- 22. PostgreSQL jsonb嵌套模式匹配跨多行的文本搜索
- 23. 如何在python匹配跨多行括号中的文字
- 24. 熊猫:跨数据集列匹配
- 25. 跨行Rspec的/水豚匹配数据和列
- 26. REGEX匹配多行
- 27. SQL匹配多行
- 28. AWK多行匹配
- 29. 匹配多行&IgnoreSome
- 30. sql匹配多行
哪个RDBMS,你可以提供一些样品的输入和输出? – 2010-08-11 06:47:48
SQL Server 2000. 不幸的是,我没有任何示例数据(需要上传542个问题)。该调查在我们发言时正在完成,因此我已经了解了该桌子的外观。 Tought我会尽我的功课.... – Leem 2010-08-11 06:57:19