我根據用戶的選擇創建動態日期表。 讓我們假設用戶選擇15-9至19-9的日期 因此,我創建了如下表格,其中我把日期作為列
。我創建了這個查詢作為例子來再現這個表
。with dates ( [15/09/2018】。] [16/09/2018] 。 [17/09/2018] 。 [18/09/2018] 。 [19/09/2018]) 為
( select '1' ,'0', '1', '1','1' union all
select '1' ,'0','0'。 '1','1' union all
select '1' ,'0','1', '0','1' union all
select '0' ,'0','1', '1','1' union all
select '0' ,'0', '0','1','0')
)
select [15/09/2018】。] [16/09/2018] 。 [17/09/2018] 。 [18/09/2018] 。 [19/09/2018] from日期
現在我想在SQL中創建一個臨時表,其中我有額外的行,它有列標題的名稱日 比如15/09/2018日的名字是wed,等等
。不知道要搜索什么和如何做
上面的查詢只是一個查詢,所以你可以創建我正在使用的表(作為例子),列頭中的日期是動態的,所以我不能硬編碼它們,所以我需要一些查詢,讀取列頭,從它獲得日名,并將其添加到該列下的行中uj5u.com熱心網友回復:你可以使用select into創建一個帶有列名的臨時表作為你選擇的一部分:
with dates2(...)
select
[15/09/2018] 。 [16/09/2018] 。 [17/09/2018] 。 [18/09/2018] 。 [19/09/2018]
into #MyTempTable
from dates2
uj5u.com熱心網友回復:
基本上,你可以創建表,然后使用information_schema來獲得列名,這可以用來為每個列名生成日名,然后PIVOT這個結果變成一行,被UNION成資料。
CREATE TABLE test (
[15/09/2018] varchar(12)
, [16/09/2018] varchar(12)
, [17/09/2018] varchar(12)
, [18/09/2018] varchar(12)
, [19/09/2018] varchar(12)
);
with dates2 (col1, col2, col3, col4, col5) as
(
select '1' ,'0', '1', '1','1' union all
select '1' ,'0','0'。 '1','1' union all
select '1' ,'0','1', '0','1' union all
select '0' ,'0','1', '1','1' union all
select '0' ,'0', '0','1','0')
)
INSERT INTO 測驗
select * from dates2
;
--調整為按`ord`排序,并使用`UNION ALL`以防止洗掉非唯一的行。
WITH cte AS (
SELECT 1 AS ord, * FROM test
UNION ALL
SELECT 0 AS ord,
[1], [2], [3], [4], [5]
FROM
(
SELECT ORDINAL_POSITION, DATENAME(dw, CONVERT(DATE, COLUMN_NAME, 103) AS colname
FROM INFORMATION_SCHEMA.columns
WHERE table_schema = 'dbo'/span>
and table_name ='test'
) AS SourceTable
矩陣
(
MAX( colname )
FOR ORDINAL_POSITION IN ( [1], [2], [3], [4], [5] )
) AS PivotTable
)
SELECT * FROM cte ORDER BY ord
;
并創建臨時表:
WITH cte as (
SELECT 1 AS ord,* FROM test
UNION ALL
SELECT 0 AS ord,
[1], [2], [3], [4], [5]
FROM
(
SELECT ORDINAL_POSITION, DATENAME(dw, CONVERT(DATE, COLUMN_NAME, 103) AS colname
FROM INFORMATION_SCHEMA.columns
WHERE table_schema = 'dbo'/span>
and table_name ='test'
) AS SourceTable
矩陣
(
MAX( colname )
FOR ORDINAL_POSITION IN ( [1], [2], [3], [4], [5] )
) AS PivotTable
)
SELECT * INTO #TmpTable FROM cte
;
SELECT * FROM #TmpTable ORDER by ord;
測驗案例:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/332319.html
標籤:

