2016-08-01 12 views
0

私は以下のようなテーブルビューを持っています。昨日の棚卸在庫で昨日の売り上げを表示する方法

昨日の売り上げを表示するにはどうすればいいですか(DATATYPEではSとマークされます)、他のすべてのDATATYPEを 'I'と表示する必要がありますか?

必要な出力が最後トン

+----------+-----------+-----------------+ 
 
| 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 

数値

+0

私は昨日の売上と唯一 '私'(昨日から戻る) –

+0

とマークされているだけを表示する必要がありますそれでは、SALESDATEは<= getdate() - 1と比較する必要があります –

0

としてのSerialNoをsupponsingより説明し、期待される出力とのあなたの質問を編集し、あなたの質問は不明である。この

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' 
関連する問題