我得到一個問題,我必須只返回客戶的名字和姓氏要麼編寫一個查詢來查找所有間歇性客戶(約會之間有6個月差距的人,或每年約有兩次約會的人)
- 一個約會每年
CREATE TABLE [dbo].[Appointments](
[pk_appointments] [int] IDENTITY(1,1) NOT NULL,
[k_client_info] [int] NOT NULL,
[date] [datetime] NOT NULL
) ON [PRIMARY]
CREATE TABLE [dbo].[client_info](
[pk_client_info] [int] IDENTITY(1,1) NOT NULL,
[first_name] [nvarchar](50) NOT NULL,
[last_name] [nvarchar](50) NOT NULL,
[phone] [nvarchar](50) NOT NULL,
) ON [PRIMARY]
我的想法是寫兩個查詢同時滿足1和2,聯合在一起。我有2如下:
SELECT DISTINCT first_name, last_name
FROM client_info
LEFT JOIN appointments ON pk_client_info = k_client_info
GROUP BY first_name, last_name, k_client_info, year(date)
HAVING COUNT(*) <= 2
,但我有一些麻煩纏繞我的頭圍繞如何編寫將滿足1,這是找到所有客戶約會之間的大於6個月的空白查詢。我想過在client_info表上運行一個select並加入預約表兩次,並以某種方式讓他們排隊,並按正確的順序,以便我可以比較日期。也許我需要做一個ROW_NUMBER OVER PARTION BY k_client_info?
任何幫助將不勝感激。感謝您的時間提前。
我會考慮具有兩個結構WHERE子句中的子查詢以及它們之間的OR。 –