簡體   English   中英

如何正確 select 這個分組數據?

[英]How do I select this grouped data correctly?

首先,對於通用標題,我不知道如何准確地表達我的問題。

我正在使用舊數據庫並且無法更改架構,所以我不得不使用我所擁有的。

表設置(列):

  1. Id(一個普通的 int id)
  2. UniqueId(包含每個位置的 uniqueIds 的列)
  3. 狀態(可以包含三個狀態之一的 varchar 列,“已完成”、“失敗”、“注意”)
  4. Count(一個 int 列,表示有多少用戶落入每個狀態

示例數據:

    UniqueId    Status  Count
679FCE83-B245-E511-A42C-90B11C2CD708    completed   64
679FCE83-B245-E511-A42C-90B11C2CD708    Attention   1
679FCE83-B245-E511-A42C-90B11C2CD708    failed  101
4500990D-F516-E411-BB09-90B11C2CD708    completed   100
4500990D-F516-E411-BB09-90B11C2CD708    Attention   17
4500990D-F516-E411-BB09-90B11C2CD708    failed  516
557857BD-6B46-E511-A42C-90B11C2CD708    completed   67
557857BD-6B46-E511-A42C-90B11C2CD708    Attention   4
557857BD-6B46-E511-A42C-90B11C2CD708    failed  103

我要做的是 select 所有記錄,按 uniqueId 分組,每個狀態都有一個單獨的列,其中包含各自的計數。 結果看起來像這樣......

UniqueId, count(completed), count(failed), count(Attention)
679FCE83-B245-E511-A42C-90B11C2CD708     64     101     1
4500990D-F516-E411-BB09-90B11C2CD708     100     516     17
557857BD-6B46-E511-A42C-90B11C2CD708     67     103     4

我確定我錯過了一些基本的東西,但我似乎無法找到谷歌的話。

有人能把我推向正確的方向嗎?

您可以使用條件聚合:

select uniqueid, 
       sum(case when status = 'Completed' then count else 0 end) as completed,
       sum(case when status = 'Failed' then count else 0 end) as failed, 
       sum(case when status = 'Attention' then count else 0 end) as attention
from t
group by uniqueid;

暫無
暫無

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

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