2013-08-21 73 views
0

兩個報告使用的是表的列具有以下查詢鮮明的列名

SELECT [Employee Name], [Email_ID], [Region], [DOB], [Joining Date], [Gross Salary] FROM [tblC6FD_Data_15_EmployeeData] ORDER BY [Employee Name] ASC, [Email_ID] ASC, [Region] ASC, [DOB] ASC, [Joining Date] ASC, [Gross Salary] ASC 

SELECT [Employee Name], [Region], [Email_ID], [DOB], [Leaving Date], [Basic Salary] FROM [tblC6FD_Data_15_EmployeeData] ORDER BY [Employee Name] ASC, [Region] ASC, [Email_ID] ASC, [DOB] ASC, [Joining Date] ASC, [Gross Salary] ASC 

,我想表的不同列名單正在使用的報告

預期輸出

Employee 
Email 
Region 
DOB 
Joining Date 
Gross Salary 
Leaving Date 
Basic Salary 

我有一個想法,將它與,分開,但很多混淆和複雜性以避免之後的其他字符串從關鍵字。

任何人都可以提出一個簡單的解決方案。

+0

換句話說 - 要分析查詢文本,並從SELECT子句返回列,對不對? – athabaska

+0

是的,你可以看到在這兩個查詢中有一些列是相同的,但我想要不同的值 –

+0

請注意所有人對這個問題進行編輯:**兩個查詢以表格的形式存儲**請勿使用換行符等格式化數值。 –

回答

0

你在說這個嗎?這給出了列名列表

SELECT c.COLUMN_NAME 
    FROM INFORMATION_SCHEMA.[COLUMNS] c WHERE c.TABLE_NAME = 'table_name' 
+0

你的回答是保鏢給我:-( –

+1

你能給出一個測試數據,你需要什麼 – brykneval

+0

請檢查更新的問題 –

0

您必須使用字符串函數進行分析,例如,在C#中它將是IndexOf()和Substring()。

P.S.似乎這個問題是無關的sql-server btw。

1

我包裹起來它有以下解決方案

declare @str nvarchar(max) 
    set @str = (select ReportSQL from tblRB_Report where PK_ReportID = 15) 
    set @str = REPLACE(@str,']',' ') 
    set @str = REPLACE(@str,'[',' ') 
    set @str = REPLACE(@str,'select',' ') 

set @str = SUBSTRING(@str,0,charindex('FROM',@str)) 
    --print @str 


sELECT * from [dbo].[StringSplit](@str,',')