iT邦幫忙

0

SQL語法請益

sql

請問各位大大

小弟有一張A表內含ID和日期

我想找出不同天所新增或減少的ID

新增的ID (2018-01-03有 2018-01-03沒有)
111

減少的ID (2018-01-03沒有 2018-01-02有)
456
789

A表如下

ID     DATE
123    2018-01-02
456    2018-01-02
789    2018-01-02
123    2018-01-03
111    2018-01-03

請問上述結果該如何下SQL語法

再請各位指點

謝謝

註:為MYSQL資料庫

2 個回答

0
dog830228
iT邦研究生 4 級 ‧ 2018-01-05 10:35:51
最佳解答

看看合不合用

--ID     DATE
--123    2018-01-02
--456    2018-01-02
--789    2018-01-02
--123    2018-01-03
--111    2018-01-03

CREATE TABLE #TEMP
(
	ID INT,
	[DATE] DATE
)

INSERT #TEMP
(
	ID,
	[DATE]
) 
VALUES
(123,'2018-01-02'),
(456,'2018-01-02'),
(789,'2018-01-02'),
(123,'2018-01-03'),
(111,'2018-01-03')

SELECT [DATE] FROM #TEMP
GROUP BY [DATE]

--(2018-01-03沒有 2018-01-02有)
SELECT *
FROM #TEMP AS T
WHERE 
	T.[DATE] = '2018-01-02'
AND
	T.ID NOT IN
	(
		SELECT DISTINCT ID 
		FROM #TEMP
		WHERE [DATE] = '2018-01-03'
	) 

--(2018-01-03有 2018-01-02沒有)
SELECT *
FROM #TEMP AS T
WHERE 
	T.[DATE] = '2018-01-03'
AND
	T.ID NOT IN 
	(
		SELECT DISTINCT ID 
		FROM #TEMP
		WHERE [DATE] = '2018-01-02'
	) 

DROP TABLE #TEMP
Neish iT邦研究生 4 級 ‧ 2018-01-05 10:51:24 檢舉

再次檢查一次語法
跟大大的架構大同小異

才發現原來是我另一個條件下錯...
難怪結果一直不對@@

再次感謝大大協助 !

WilliamHuang
iT邦研究生 1 級 ‧ 2018-01-05 10:17:18
【**此則訊息已被站方移除**】

我要發表回答

立即登入回答