私は返すクエリを書きたい、このSQL Serverテーブルから特定の月に関連する詳細データを選択しますか?
Month Employee
Jan John
Jan George
April Matt
April Maxim
のようなテーブルの誕生日のデータを持っている
Month Employee
Jan John
George
April Matt
Maxim
私は返すクエリを書きたい、このSQL Serverテーブルから特定の月に関連する詳細データを選択しますか?
Month Employee
Jan John
Jan George
April Matt
April Maxim
のようなテーブルの誕生日のデータを持っている
Month Employee
Jan John
George
April Matt
Maxim
DECLARE @Birthdays TABLE (Month NVARCHAR(15), Employee NVARCHAR(20))
INSERT INTO @Birthdays
(Month, Employee)
SELECT
'Jan','John'
UNION ALL
SELECT 'Jan','George'
UNION ALL
SELECT 'April','Matt'
UNION ALL
SELECT 'April','Maxim'
;WITH cte
AS(
SELECT Month, Employee
,ROW_NUMBER()OVER(PARTITION BY Month ORDER BY Month) 'RN'
FROM @Birthdays
)
SELECT
CASE WHEN C.RN = 1 THEN C.Month ELSE '' END AS 'Month'
, C.Employee
FROM cte C
ORDER BY C.Month DESC
それは働いた。ありがとうございます –
CREATE TABLE dbo.Birthdays (
Month VARCHAR(100)
,Employee VARCHAR(100)
);
INSERT INTO dbo.Birthdays (Month,Employee)
VALUES ('Jan','John'),('Jan','George'),('April','Matt'),('April','Maxim');
SELECT CASE
WHEN b.Month = LAG(b.Month, 1, 0) OVER (
ORDER BY b.Month
)
THEN ''
ELSE b.Month
END AS Month
,b.Employee
FROM dbo.Birthdays b
私はこれが最良の答えだと思います。あなたはそれを書式設定する時間を費やす必要があります、そして、多分コメントを追加してください –
;With cte([Month], Employee)
AS
(
SELECT 'Jan' ,'John' Union all
SELECT 'Jan' ,'George' Union all
SELECT 'April','Matt' Union all
SELECT 'April','Maxim'
)
SELECT CASE WHEN [MonthSeq]=1 THEN [Month] ELSE '' END AS [Month], Employee From
(
Select * , ROW_NUMBER()Over(Partition by [Month] order by [Month]) As [MonthSeq] from cte
)Dt
Order BY dt.[Month] desc
アウトプット
Month Employee
----------------
Jan George
John
April Maxim
Matt
プレゼンテーションレイヤーで修正します。 – jarlh
私はプレゼンテーション層を持っていません。 –