根據調查的是/否答案,我得到了一個由'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