所以我有一個糟糕的查詢,目前存在於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