2017-07-19 42 views
0

假设我有如下表:上一个新列求和的列值与条件

Letter Item1 Item2 
'a'  2  3 
'b'  3  5 
'c'  6  7 

我如何编写一个查询返回的物品的话我通过,如果字包含某些字母的总和?例如:

Word Sum 
'ab' 13 
'abc' 26 
'bc' 21 

编辑:我需要在查询中传递几个单词。

+0

为什么你会不会考虑'ca'或'ac'? –

+0

@VijaykumarHadalgi这只是一个例子。 – salamanca

回答

0

考虑:

SELECT [enter word] AS Word, Sum(IIf(InStr([enter word],[Letter])>0,[Item1]+[Item2],0)) AS LtrSum FROM Table1 GROUP BY [enter word];

SELECT DISTINCT [enter word1] AS W1, Sum(IIf(InStr([enter word1],[Letter])>0,[Item1]+[Item2],0)) AS C1, [enter word2] AS W2, Sum(IIf(InStr([enter word2],[Letter])>0,[Item1]+[Item2],0)) AS C2, [enter word3] AS W3, Sum(IIf(InStr([enter word3],[Letter])>0,[Item1]+[Item2],0)) AS C3 FROM Table1 GROUP BY [enter word1], [enter word2], [enter word3];

SELECT DISTINCT [enter word1] AS W1, DSum("Item1","Table1","InStr('" & [enter word1] & "', [Letter])>0")+DSum("Item2","Table1","InStr('" & [enter word1] & "', [Letter])>0") AS C1, [enter word2] AS W2, DSum("Item1","Table1","InStr('" & [enter word2] & "', [Letter])>0")+DSum("Item2","Table1","InStr('" & [enter word2] & "', [Letter])>0") AS C2, [enter word3] AS W3, DSum("Item1","Table1","InStr('" & [enter word3] & "', [Letter])>0")+DSum("Item2","Table1","InStr('" & [enter word3] & "', [Letter])>0") AS C3 FROM Table1;

SELECT Table2.Word, Sum(IIf(InStr([Word],[Letter])>0,[Item1]+[Item2],0)) AS LtrSum FROM Table2, Table1 GROUP BY Table2.Word;

+0

谢谢。但是如果我需要在查询中传递5个单词并且它们不存储在另一个表中呢? – salamanca

+0

查看修订后的答案 – June7

0

您只需简单地使用CHARINDEX

SELECT SUM(Item1) + SUM(Item2) 
FROM TABLE_NAME WHERE CHARINDEX(Letter, ENTER_WORD) > 0 
+0

CharIndex在Access查询中不是一个可识别的功能。 – June7