2016-08-01 12 views
0

我有一個像下面的表視圖。如何只顯示昨天的銷售與以前的庫存股

我們如何顯示昨天的銷售情況(在DATATYPE中標記爲S),但需要顯示標記爲「我」的所有其他DATATYPE?

所需的輸出顯示在一個't

+----------+-----------+-----------------+ 
 
| DATATYPE | SALESDATE | SERIALNO  | 
 
+----------+-----------+-----------------+ 
 
| I  | 20160730 | 355274073159321 | 
 
+----------+-----------+-----------------+ 
 
| I  | 20160730 | 355274073158927 | 
 
+----------+-----------+-----------------+ 
 
| I  | 20160730 | 355274073166888 | 
 
+----------+-----------+-----------------+ 
 
| I  | 20160730 | 355274073157333 | 
 
+----------+-----------+-----------------+ 
 
| I  | 20160730 | 355274073158851 | 
 
+----------+-----------+-----------------+ 
 
| I  | 20160730 | 355274073159784 | 
 
+----------+-----------+-----------------+ 
 
| I  | 20160730 | 355274073158828 | 
 
+----------+-----------+-----------------+ 
 
| I  | 20160730 | 355274073158950 | 
 
+----------+-----------+-----------------+ 
 
| I  | 20160730 | 355274073157960 | 
 
+----------+-----------+-----------------+ 
 
| S  | 20160731 | 355274073159230 | 
 
+----------+-----------+-----------------+ 
 
| S  | 20160730 | 355274073166904 | 
 
+----------+-----------+-----------------+ 
 
| S  | 20160730 | 355274073190128 | 
 
+----------+-----------+-----------------+ 
 
| S  | 20160730 | 355274073158679 | 
 
+----------+-----------+-----------------+ 
 
| S  | 20160730 | 355274073159255 | 
 
+----------+-----------+-----------------+ 
 
| S  | 20160730 | 355274073159925 | 
 
+----------+-----------+-----------------+ 
 

 
I need the output like this. Only show yesterday sale (say today is 01-Aug-2016) and all item marked as I on DATATYPE column 
 

 
+----------+-----------+-----------------+ 
 
| DATATYPE | SALESDATE | SERIALNO  | 
 
+----------+-----------+-----------------+ 
 
| I  | 20160730 | 355274073159321 | 
 
+----------+-----------+-----------------+ 
 
| I  | 20160730 | 355274073158927 | 
 
+----------+-----------+-----------------+ 
 
| I  | 20160730 | 355274073166888 | 
 
+----------+-----------+-----------------+ 
 
| I  | 20160730 | 355274073157333 | 
 
+----------+-----------+-----------------+ 
 
| I  | 20160730 | 355274073158851 | 
 
+----------+-----------+-----------------+ 
 
| I  | 20160730 | 355274073159784 | 
 
+----------+-----------+-----------------+ 
 
| I  | 20160730 | 355274073158828 | 
 
+----------+-----------+-----------------+ 
 
| I  | 20160730 | 355274073158950 | 
 
+----------+-----------+-----------------+ 
 
| I  | 20160730 | 355274073157960 | 
 
+----------+-----------+-----------------+ 
 
| S  | 20160731 | 355274073159230 | 
 
+----------+-----------+-----------------+

我全選擇所

SELECT  bi.btLatinAbbrev, 'C710' AS SUBS, CASE WHEN bi.btLatinAbbrev = 'Sales' THEN 'S' ELSE 'I' END AS DATATYPE, REPLACE(CONVERT(CHAR(10), bi.buDate, 112), '/', '') AS SALESDATE, 
         'C000079967' AS FROMSITE, CASE WHEN snc.Qty = 1 THEN '' ELSE 'EU' END AS TOSITE, snc.SN AS SERIALNO 
FROM   dbo.vwExtended_bi AS bi INNER JOIN 
         dbo.snt000 AS snt ON snt.biGUID = bi.biGUID INNER JOIN 
         dbo.snc000 AS snc ON snc.GUID = snt.ParentGUID 
WHERE  (bi.btLatinAbbrev = 'Sales') OR 
         (snc.Qty = 1) 
+0

你的問題不清楚,有更多的解釋和預期產出編輯你的問題。 – Sankar

+0

您的預期結果是什麼? – Madhivanan

+0

您正在將日期存儲在文本列中?這是一個很好的習慣。始終使用正確的[數據類型](https://msdn.microsoft.com/en-us/library/ms187752.aspx)。它使得解決這樣的問題變得更容易。它也減少了系統持有不正確值的機會。 –

回答

0

你可以試試這個使用CONVERT

SELECT * FROM 
(
SELECT DATATYPE, SALESDATE, SERIALNO FROM TABLE WHERE 
    SALESDATE = CONVERT(NVARCHAR,GETDATE()-1,112) 
    AND DATATYPE = 'S' --sales yesterday 
UNION ALL  
SELECT DATATYPE, SALESDATE, SERIALNO FROM TABLE WHERE 
    CONVERT(DATETIME,SALESDATE,112) <= CONVERT(DATETIME,GETDATE()-1,112) 
    AND DATATYPE = 'I' --I yesterday to back 
) AS T 
ORDER BY T.DATATYPE DESC, CONVERT(DATETIME,T.SALESDATE,112) DESC, T.SERIALNO DESC 

supponsing的SerialNo爲數字

+0

我需要只顯示昨天的銷售和欄標記爲'我'(從昨天到回) –

+0

好吧,那麼我們需要比較SALESDATE是<= getdate() - 1 –

0

試試這個

SELECT * FROM Tbl 
WHERE 
    (DATATYPE = 'S' AND 
     SALESDATE = CONVERT(NVARCHAR(11), GETDATE() - 1, 112) -- 20160731 
    ) OR 
    DATATYPE = 'I' 
1
SELECT DATATYPE,CONVERT(VARCHAR(8),SALESDATE,112) SALESDATE,SERIALNO FROM table 
WHERE 
    (DATATYPE = 'S' AND 
     SALESDATE = convert(date,GETDATE()-1) 
    ) OR 
    DATATYPE = 'I' 
相關問題