簡體   English   中英

我想要一個大於1等於1的案例陳述

[英]I want a case statetement that count more than 1 as 1

請幫助解決以下查詢。

有問題的列包含Y和N,我希望N顯示零,Y顯示1。

我希望它匯總每台機器的訪問次數if >= 1 to show 1 客戶要求是是否已訪問機器,無論其次數如何。

   Select MachineNo,
         [Date_of_Visit],
        Month([Date_of_Visit])[Month],
        Year([Date_of_Visit])[Year],
        sum(case when [Visited] = 'Y' then 1 else 0 end)[No of Visits]             
FROM [MachineVisit]
Group by [Date_of_Visit],
         [MachineNo]

使用Max而不是Sum

Max(case when [Visited] = 'Y' then 1 else 0 end)[Visits]

它的編寫方式有點讓人困惑,但是我假設您想要的是:

select sum(case when [visited] >1 then 1 else null end) visists
from visit_table
where visit_date = '2015-01-30'

假設您有一個表,該表將1個IP地址在一天中的訪問次數作為一次條目進行計數。

如果您有一個表,其中每個表訪問都有一個條目,那么您可能需要這樣做:

select count(distinct ip_address)
from (
     select ip_address
     from visit_table
     where visit_date = '2015-01-30'
     group by ip_address
     having count(1) >1
     ) x

編輯:

那么,簡化列表的方式應該是:

select count(1)
from visit_table
where [visited]='Y'
     and visit_date = '2015-01-30'
;

那應該工作...

盡管我面前沒有桌子-因此,如果這不起作用,請發布完整查詢。

暫無
暫無

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

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