iT邦幫忙

1

MSSQL 查詢條件下數量為0的

  • 分享至 

  • xImage

請問如何找出圖片第一個表內,查詢條件下,數量為0的資料
https://ithelp.ithome.com.tw/upload/images/20211224/20141703jbpXzvmr8V.png

目前是用

SELECT DISTINCT A.訂單號碼,A.電話,ISNULL(t.數量, 0) 數量
   FROM  資料表 A
   LEFT JOIN (SELECT 訂單號碼,電話,COUNT(狀態) 數量
	          FROM 資料表
	          WHERE 狀態='已收件'
	          GROUP BY  訂單號碼,電話) t 
   ON A.訂單號碼 = t.訂單號碼
   WHERE ISNULL(數量,0)=0

找出來會是圖片第二個表
請問有更好的方法嗎?

沒看到數量欄位...
果然我學藝不精,不解其奧妙之處
尼克 iT邦大師 1 級 ‧ 2021-12-24 11:27:37 檢舉
題目不清楚!
純真的人厲害
小山丘 iT邦新手 2 級 ‧ 2021-12-24 11:37:34 檢舉
資料表指的是圖片第一個表
數量是第一個表的狀態為已收件的數量
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

7
純真的人
iT邦大師 1 級 ‧ 2021-12-24 11:31:41
最佳解答

參考...

declare @Tmp table(
	訂單號碼 nvarchar(50)
	,電話 nvarchar(50)
	,狀態 nvarchar(50)
)

insert into @Tmp
values('01','0000','已收件')
,('01','0000','已收件')
,('02','1111','已申請')
,('02','1111','已申請')

SELECT 訂單號碼
,電話
,sum((case when 狀態 = '已收件' then 1 else 0 end)) 數量
FROM @Tmp
GROUP BY  訂單號碼
,電話
having sum((case when 狀態 = '已收件' then 1 else 0 end)) = 0

https://ithelp.ithome.com.tw/upload/images/20211224/2006136951G20iDLIE.png

小山丘 iT邦新手 2 級 ‧ 2021-12-24 11:40:47 檢舉

感謝~

4
rogeryao
iT邦超人 7 級 ‧ 2021-12-24 15:55:14

玩一下

CREATE TABLE YY (
  訂單號碼 nvarchar(50),
  電話 nvarchar(50),
  狀態 nvarchar(50)
)

INSERT INTO YY
VALUES 
('01', '0000', N'已收件'),
('01', '0000', N'已收件'),
('02', '1111', N'已收件'),
('02', '1111', N'已申請'),
('04', '2222', N'已申請'),
('04', '2222', N'已申請');
SELECT DISTINCT A.訂單號碼,A.電話,0 AS '數量'
FROM YY A
WHERE NOT EXISTS (SELECT *
FROM YY B
WHERE A.訂單號碼 = B.訂單號碼
AND A.電話 = B.電話
AND B.狀態 = N'已收件')

Demo

我要發表回答

立即登入回答