簡體   English   中英

在SQL Server的視圖中提供基於日期的活動狀態列

[英]Provide status of an Activity based on date column in a view in SQL Server

在視圖中必須提供基於日期的Status

條件是:

  • 如果其中一項活動沒有該人的日期,則StatusActive

  • 如果所有活動都有該人的日期,則“ Status為“ Not Active

如何獲得一個人的STATUS

例如:

|PersonId|Name|Activity | Date      | 
+--------+----+---------+-----------+
| 1      |John| a       | 01/01/2015|
| 1      |John| b       | 03/12/2016|
| 1      |John| c       | 02/13/2017|
| 2      |Sam | d       | 06/01/2014|
| 2      |Sam | e       | 05/18/2016|
| 2      |Sam | f       | NULL      |   

視圖中的輸出:

|PersonId|Name|Status    | 
+--------+----+----------+
| 1      |John|Not Active| 
| 2      |Sam | Active   | 

您可以通過聚合來做到這一點:

select personid, name,
       (case when count(*) = count(date) then 'Not Active' else 'Active' end) as status
from t
group by personid, name;

我認為戈登的答案更好,但是自從我開始輸入答案以來,我認為我還是會完成它的。 就像是

declare @maxDate date = datefromparts(9999, 12, 31)

select case when max(isnull(Date, @MaxDate)) = @maxDate) then 'Active' else 'inactive'
from ...

暫無
暫無

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

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