簡體   English   中英

使用帶有計數功能的SQL訪問多個字段

[英]Access SQL with count function for multiple fields

所有。 我的桌子看起來像

Team1 Team2   result
  a    b        win
  a    c        tie
  b    d        loss
  c    a        win
  d    c        win

我想輸出team1結果統計信息,例如

Team1  win  loss  tie
  a     4    2    1
  b    2     2    3

我可以使用

SELECT TEAM1,Count(Result='win') as Win_Number
From GAMES
Where Result='win'
Group by TEAM1

但是我應該增加產量損失和約束力嗎? 使用聯接?

更新:使用“ iif sum”命令解決了該問題,請參閱XQbert的帖子。 非常感謝。

這是一種方法

我一直忘記在MSAccess的內聯選擇中無法使用的情況

因此,這將不起作用:

SELECT [Home team],
  sum(CASE WHEN result='win' THEN 1 else 0 END) as Win,
  sum(CASE WHEN result='loss' THEN 1 else 0 END) as Loss,
  sum(CASE WHEN result='tie' THEN 1 else 0 END) as Tie
FROM GAMES
GROUP BY [Home team]

但這可能:

SELECT  [Home team]
    sum(iif(result='win', 1,0)) as Win,
    sum(iif(result='loss', 1,0)) as Loss,
    sum(iif(result='tie', 1,0)) as Tie,
FROM GAMES
    GROUP BY [Home team]

這基本上表示評估按主隊分組的表中的每個結果,如果結果是贏,輸或平局,則將值設置為1,否則將其設置為0。然后將求和給定主隊的所有結果。 由於每個結果都是贏球或平局,因此在贏球,平局或平局中將出現1,但只有這三個中的一個; 盡管結果不算是輸贏或平局,也可能什么也沒有。盡管我支持下面的交叉表查詢語句。

所以數據在總和之前看起來像這樣

Team1  win  loss  tie
  a     1    0    0
  a     1    0    0
  a     1    0    0
  a     1    0    0
  a     0    1    0
  a     0    1    0
  a     0    0    1
  b     1    0    0
  b     1    0    0
  b     0    1    0
  b     0    1    0
  b     0    0    1
  b     0    0    1
  b     0    0    1

然后總和會給你...

Team1  win  loss  tie
  a     4    2    1
  b     2    2    3

Access具有一個很好的功能,稱為交叉表查詢。 將查詢類型更改為此並嘗試使用它。 這是一個很好的功能,訪問權限沒有很多大型數據庫! IT允許您基於行的值(在您的情況下為結果)創建列,然后按行進行匯總(計算給定團隊出現的輸贏平局次數)

示例: https//support.office.com/en-us/article/Make-summary-data-easier-to-read-by-using-a-crosstab-query-8465b89c-2ff2-4cc8-ba60-2cd8484667e8

如何: http//office.microsoft.com/zh-cn/access-help/create-a-select-or-crosstab-query-mdb-HP005187965.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM