所以我有一个糟糕的查询,目前存在于MS Access中,我试图在SQL Server中重写。基本上,我从一个文本文件中获取数据,我试图根据特定条件对其进行过滤。SQL Where和LIKE和IN条款
我的问题来自数据在文本文件中的方式。我的表是与此类似:
Table1
BusinessDate DateTime
Amount money
User1 varchar
User2 varchar
User3 varchar
User4 varchar
... varchar
User16 varchar
我有了日期,然后有16列与已经由其他用户添加数据的数据表。本表中还有其他一些字段,但对于这个问题它们是不必要的。
当前查询对15个值进行过滤,其中userId就像是某个东西。
SELECT *
FROM Table1
WHERE (User1 Like 'AB%' Or User1 Like 'CD%' Or User1 Like 'EF%'...)
OR (User2 Like 'AB%' Or User2 Like 'CD%' Or User2 Like 'EF%'...)
我想要做的是将类似的值存储在表中,以便我可以在我的查询中加入他们。我不知道所有的值,所以我需要使用通配符,因为它可能是字母数字字符的任意可能组合。因此,我将有一个这样的表:
ValueTable
AB%
CD%
EF%
HI%
...
然后我的查询是类似于此的东西,但我不认为这是可能的
SELECT *
FROM Table1
WHERE User1 Like IN (SELECT Value FROM ValueTable)
OR User2 Like IN (SELECT Value FROM ValueTable)
是否有可能做这样的事情?如果是这样,应该使用什么语法,因为我完全难倒了。
的数据模型是错误的。您是否可以重构数据,以便每个Table1行包含单个用户/金额/业务日期的数据?您应该能够使用数据透视查询创建现有结构,并且过滤将更加容易。 –
@JimGarrison我同意过滤这种方式会容易得多,但重构数据将会很困难。这个文件比我在上面显示的大约70列数据有更多的字段,这将是非常困难的。 – Taryn
平衡邪恶的力量很好 – swasheck