【问题标题】:Summing column values with condition on a new column在新列上对具有条件的列值求和
【发布时间】:2017-07-19 06:32:14
【问题描述】:

假设我有下表:

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

如果单词包含某些字母,我如何编写查询返回我通过的单词的项目总和?例如:

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

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

【问题讨论】:

  • 你为什么不考虑caac
  • @VijaykumarHadalgi 这只是一个例子。

标签: sql ms-access select


【解决方案1】:

你可以简单地使用CHARINDEX:

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

【讨论】:

  • CharIndex 在 Access 查询中不是一个可识别的函数。
【解决方案2】:

考虑:

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;

【讨论】:

  • 谢谢。但是如果我需要在查询中传递 5 个单词并且它们没有存储在另一个表中怎么办?
  • 查看修改后的答案
猜你喜欢
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
  • 2013-04-14
  • 2021-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多