22,209
社区成员
发帖
与我相关
我的任务
分享
DECLARE @t TABLE(finvflag VARCHAR(3) NOT NULL)
INSERT @t(finvflag)
VALUES('0'),('0'),('1');
WITH tt AS (
SELECT ISNULL(SUM(CASE WHEN finvflag='1' THEN 1 ELSE 0 END),0) 已开数量,
ISNULL(SUM(CASE WHEN finvflag='0' THEN 1 ELSE 0 END),0) 未开数量 FROM @t)
SELECT CASE WHEN tt.已开数量>0 AND tt.未开数量>0 THEN '部分开'
WHEN tt.已开数量=0 AND tt.未开数量=0 THEN '没数据'
WHEN tt.已开数量=0 AND tt.未开数量>0 THEN '未开'
ELSE '全开' END 状态
FROM tt
DECLARE @t TABLE(finvflag VARCHAR(3) NOT NULL)
INSERT @t(finvflag)
VALUES('0'),('0'),('1');
WITH tt AS (
SELECT SUM(CASE WHEN finvflag='1' THEN 1 ELSE 0 END) 已开数量,
SUM(CASE WHEN finvflag='0' THEN 1 ELSE 0 END) 未开数量 FROM @t)
SELECT CASE WHEN tt.已开数量>0 AND tt.未开数量>0 THEN '部分开'
WHEN tt.已开数量=0 AND tt.未开数量=0 THEN '没数据'
WHEN tt.已开数量=0 AND tt.未开数量>0 THEN '未开'
ELSE '全开' END 状态
FROM tt
SELECT 开票状态=CASE
WHEN COUNT(DISTINCT finvflag)=2 THEN '部分开票'
WHEN COUNT(DISTINCT finvflag)=1 AND SUM(convert(int,Isnull(finvflag,0)))=0 THEN '未开票'
WHEN COUNT(DISTINCT finvflag)=1 AND SUM(convert(int,Isnull(finvflag,0)))>0 THEN '已开票'
END FROM t_copd_dlvmst
select case when max(isnull(finvflag,0))=min(isnull(finvflag,0)) and min(finvflag)=1 then '已开票'
when max(isnull(finvflag,0))=min(isnull(finvflag,0)) and min(isnull(finvflag,0))=0 then '未开票'
else '部分开票'
end
from t_copd_dlvmst
DECLARE @t TABLE(finvflag BIT NOT NULL)
INSERT @t(finvflag)
VALUES(0),(0),(1);
WITH t AS(
SELECT DISTINCT finvflag FROM @t) --状态去重
SELECT TOP(1)
CASE WHEN LEAD(finvflag) OVER (ORDER BY finvflag) IS NULL --如果有下一记录则代表有0和1,否则只有0或者只有1
THEN CASE WHEN t.finvflag=1 THEN '全开' ELSE '未开' END
ELSE '部份开' END 状态 FROM t ORDER BY t.finvflag
SELECT 开票状态=CASE
WHEN COUNT(DISTINCT finvflag)=2 THEN '部分开票'
WHEN COUNT(DISTINCT finvflag)=1 AND SUM(finvflag)=0 THEN '未开票'
WHEN COUNT(DISTINCT finvflag)=1 AND SUM(finvflag)>0 THEN '已开票'
END FROM t_copd_dlvmst