2014-10-21 18 views
0

我從儀表板視圖檢索數據,我需要一些幫助,我的查詢檢索,其中以下條件符合昨天的數據:SQL服務器 - 前一天的數據檢索,其中

當「星期一」 JUST檢索週五數據。 當「週二檢索週六的數據,直到週一, 當「其他日子」 JUST檢索前一天,

但還有另一種情況: 排除」,前一天的數據,其中「DESP ......」是空的。 (因爲這會扭曲百分比)

這是我到目前爲止有:

SELECT CORD_DocumentCode 
,OpenDate 
,datedue 
,DESP_PostedDate 
,COUNT(CORD_DocumentCode) AS Order_Count 
,SUM(CASE WHEN InFullAndOneTime = 2 THEN 1 ELSE 0 END) AS Difot_count 
,SUM(CASE WHEN InFullAndOneTime = 2 THEN 1 ELSE 0 END) * 1.0 /COUNT(CORD_DocumentCode) AS DIFOT 
FROM DIFOTIS_View 
WHERE (OpenDate >= CASE WHEN DATENAME(dw, CONVERT(CHAR(8), GETDATE(), 112)) LIKE 'Monday' THEN CONVERT(CHAR(8), DATEADD(dd, - 2, GETDATE()), 112) 
         WHEN DATENAME(dw, CONVERT(CHAR(8), GETDATE(), 112)) LIKE 'Tuesday' THEN CONVERT(CHAR(8), DATEADD(dd, - 3, GETDATE()), 112) ELSE CONVERT(CHAR(8), 
         DATEADD(dd, - 1, GETDATE()), 112) END) --AND) (OpenDate < CONVERT(CHAR(8), GETDATE(), 112)) 


Group by OpenDate,CORD_DocumentCode, datedue, DESP_PostedDate 
order by OpenDate 

這將顯示你昨天的數據,今天是「星期三」,其結果是 15.4%(或4/26),而我希望它顯示80%(或4/5)

我曾嘗試加入

((Datediff(day,Opendate,getdate())=1) and DESP_PostedDate is not null) 

但隨後它顯示了從21Oct唯一的數據。

你應該怎麼做? 請在下面找到來自週五的數據供您細讀。

所有幫助表示讚賞。由於

埃裏克

CORD_DocumentCode  OpenDate  datedue  DESP_PostedDate Order_Count Difot_count DIFOT 
CASW92195    2014-10-19 2014-10-19 2014-10-20 1 1 1.000000000000 
CASW92196    2014-10-19 2014-10-19 2014-10-20 1 1 1.000000000000 
CASW92197    2014-10-19 2014-10-19 2014-10-20 1 1 1.000000000000 
CASW92198    2014-10-19 2014-10-19 2014-10-20 1 1 1.000000000000 
CASW92199    2014-10-19 2014-10-19 2014-10-20 1 1 1.000000000000 
CASW92200    2014-10-19 2014-10-19 NULL  1 0 0.000000000000 
CASW92201    2014-10-20 2014-10-20 2014-10-20 1 1 1.000000000000 
CASW92202    2014-10-20 2014-10-20 2014-10-20 1 1 1.000000000000 
CASW92203    2014-10-20 2014-10-20 2014-10-21 1 1 1.000000000000 
CASW92204    2014-10-20 2014-10-20 2014-10-21 1 1 1.000000000000 
CASW92205    2014-10-20 2014-10-20 2014-10-21 1 1 1.000000000000 
CASW92206    2014-10-20 2014-10-20 2014-10-21 1 1 1.000000000000 
CORD37188    2014-10-20 2014-10-20 NULL  1 0 0.000000000000 
CORD37189    2014-10-20 2014-10-20 2014-10-20 1 0 0.000000000000 
CORD37190    2014-10-20 2014-10-20 2014-10-20 1 0 0.000000000000 
CORD37191    2014-10-20 2014-10-20 2014-10-21 1 0 0.000000000000 
CORD37192    2014-10-20 2014-10-20 2014-10-20 1 0 0.000000000000 
CORD37193    2014-10-20 2014-10-20 2014-10-20 1 0 0.000000000000 
CORD37195    2014-10-20 2014-10-20 2014-10-20 1 0 0.000000000000 
CORD37196    2014-10-20 2014-10-20 2014-10-20 1 0 0.000000000000 
CORD37197    2014-10-20 2014-10-20 2014-10-21 1 0 0.000000000000 
CORD37198    2014-10-20 2014-10-20 2014-10-21 1 0 0.000000000000 
CORD37199    2014-10-20 2014-10-20 2014-10-20 1 0 0.000000000000 
CORD37200    2014-10-20 2014-10-20 NULL  1 0 0.000000000000 
CORD37211    2014-10-20 2014-10-20 2014-10-21 1 1 1.000000000000 
CORD37216    2014-10-20 2014-10-20 2014-10-21 1 1 1.000000000000 
CASW92207    2014-10-21 2014-10-21 2014-10-21 1 1 1.000000000000 
CASW92208    2014-10-21 2014-10-21 2014-10-21 1 1 1.000000000000 
CASW92209    2014-10-21 2014-10-21 2014-10-21 1 1 1.000000000000 
CASW92210    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CASW92211    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CASW92212    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CASW92213    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CORD37218    2014-10-21 2014-10-21 2014-10-21 1 1 1.000000000000 
CORD37220    2014-10-21 2014-10-20 2014-10-21 1 0 0.000000000000 
CORD37221    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CORD37222    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CORD37225    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CORD37227    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CORD37228    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CORD37229    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CORD37230    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CORD37231    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CORD37232    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CORD37233    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CORD37234    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CORD37235    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CORD37236    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CORD37237    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CORD37238    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CORD37239    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 
CORD37241    2014-10-21 2014-10-21 NULL  1 0 0.000000000000 

回答

0

我花了一段時間,但我得到這個整理出來與溼婆的幫助。從另一個論壇。 我在這裏發佈答案供將來參考。

/*Main Query */ 
declare @ReportDate datetime = getdate() 


SELECT COUNT(CORD_DocumentCode) as [count], SUM(CASE WHEN InFullAndOneTime = 2 THEN 1 ELSE 0 END) AS Difot_count, 
         SUM(CASE WHEN InFullAndOneTime = 2 THEN 1 ELSE 0 END) * 1.0/COUNT(CORD_DocumentCode) AS DIFOT 
FROM   DIFOTIS_View 
WHERE cast(datepart(dw,OpenDate) as varchar) in  
(SELECT * FROM dbo.CSVToTable(Case 
when datepart(dw,@ReportDate) =7 and DESP_PostedDate is NOT null then '6' 
when datepart(dw,@ReportDate) =6 and DESP_PostedDate is NOT null then '5' 
when datepart(dw,@ReportDate) =5 and DESP_PostedDate is NOT null then '4' 
when datepart(dw,@ReportDate) =4 and DESP_PostedDate is NOT null then '3' 
when datepart(dw,@ReportDate) =2 and DESP_PostedDate is NOT null then '6' 
when datepart(dw,@ReportDate) =3 and DESP_PostedDate is NOT null then '7,1,2' 
when datepart(dw,@ReportDate) =1 and DESP_PostedDate is NOT null then '7' Else NULL END)) and opendate>=DATEADD(day, -7,@ReportDate) 

/* Function Creation*/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE FUNCTION [dbo].[CSVToTable] (@InStr VARCHAR(MAX)) 
RETURNS @TempTab TABLE 
    (id int not null) 
AS 
BEGIN 
    ;-- Ensure input ends with comma 
    SET @InStr = REPLACE(@InStr + ',', ',,', ',') 
    DECLARE @SP INT 
DECLARE @VALUE VARCHAR(1000) 
WHILE PATINDEX('%,%', @INSTR) <> 0 
BEGIN 
    SELECT @SP = PATINDEX('%,%',@INSTR) 
    SELECT @VALUE = LEFT(@INSTR , @SP - 1) 
    SELECT @INSTR = STUFF(@INSTR, 1, @SP, '') 
    INSERT INTO @TempTab(id) VALUES (@VALUE) 
END 
    RETURN 
END 
GO 

乾杯 ħ