我有這樣的SQL服務器 - 複雜GROUP BY - 差距和羣島
+-------------+--------------+------------+----------------+
| CustomerSID | StartDateSID | EndDateSID | MarketingOptIn |
+-------------+--------------+------------+----------------+
| 12345 | 20101019 | 20131016 | Y |
| 12345 | 20131017 | 20140413 | Y |
| 12345 | 20140414 | 20140817 | N |
| 12345 | 20140818 | 20141228 | N |
| 12345 | 20141229 | 20150125 | Y |
| 12345 | 20150126 | 0 | Y |
+-------------+--------------+------------+----------------+
我需要在這個表必須在以下格式進行格式化的標誌數據之上創建視圖的數據表,基本上時間,爲的標誌是Y或N. (EndDateSID - 0是當前活動的,所以今天的日期)
+-------------+--------------+------------+----------------+
| CustomerSID | StartDateSID | EndDateSID | MarketingOptIn |
+-------------+--------------+------------+----------------+
| 12345 | 20101019 | 20140413 | Y |
| 12345 | 20140414 | 20141228 | N |
| 12345 | 20141229 | 20150825 | Y |
+-------------+--------------+------------+----------------+
大多數客戶只需要在他們的標誌改變一次,因此下面的查詢工作:
SELECT
CH1.CustomerSID
,MIN(CH1.StartDateSID) StartDate
,MAX(ISNULL(NULLIF(CH1.EndDateSID,0),CONVERT(INT, CONVERT(VARCHAR, GETDATE(), 112)))) EndDate
,CH1.MarketingOptIn
FROM DWH.DimCustomerHistory CH1
GROUP BY CH1.CustomerSID, CH1.MarketingOptIn
ORDER BY CH1.CustomerSID, CH1.MarketingOptIn
我如何才能達到預期的輸出效果,像上面那樣的客戶,不止一次改變了旗幟?
編輯:按照@ GarethD的建議,修改標題使其他人更容易搜索。
您好羅希特歡迎StackOverflow上,下一次嘗試提供一個 [** ** SqlFiddle ](http://sqlfiddle.com/#!15/5368b/6),所以我們可以更好地理解問題,並給你一個答案 快得多 - 也請閱讀[**如何問**](http:///stackoverflow.com/help/how-to-ask)另請閱讀 [**如何創建一個最小,完整和可驗證的示例。**](http://stackoverflow.com/help/mcve) –
可能的重複[Gro通過改變分組列值來排序數據](http://stackoverflow.com/questions/10110026/group-data-by-the-change-of-grouping-column-value-in-order) – Bulat
Hi @ JuanCarlosOropeza,謝謝你的建議,下次我會跟着他們。 – Rohit