1. 程式人生 > >SQL SERVER 實現轉置功能

SQL SERVER 實現轉置功能

--1生成測試表
CREATE TABLE [dbo].[TABLEA](
[WO] [varchar](50) NOT NULL,
[ColoumnName] [varchar](50) NULL,
[ColoumnValue] [varchar](50) NULL,


insert into [TABLEA]
values('PRD_100000048','SN','SN001')
insert into [TABLEA]
values('PRD_100000048','PO','PO001')
insert into [TABLEA]
values('PRD_100000048','Version','VersionO001')


select * from [TABLEA]


--2.實現轉置


IF(OBJECT_ID(N'tempdb..#TABLEA') is NOT NULL) drop table #TABLEA
IF(OBJECT_ID(N'tempdb..##TABLEA') is NOT NULL) drop table ##TABLEA
DECLARE @WO varchar(50)
set @WO='PRD_100000048'


DECLARE @ColumnList varchar(5000)
SELECT  @ColumnList=STUFF(( SELECT  ',' + 'MAX(case when ColoumnName='''+ColoumnName+''' then ColoumnValue end) as '''+ColoumnName+''' '
                    FROM    ( SELECT distinct ColoumnName  FROM dbo.[TABLEA] 
          where
[email protected]

                            ) T1
                  FOR
                    XML PATH('')
                  ), 1, 1, '') 




declare @SQL varchar(max)
set @SQL='
select wo,
'[email protected]+'
into ##TABLEA
FROM [TABLEA] where wo='''[email protected]+'''
group by wo
'
exec(@SQL)
select * into #TABLEA from  ##TABLEA
IF(OBJECT_ID(N'tempdb..##TABLEA') is NOT NULL) drop table ##TABLEA --全域性臨時表不能長時間存在,及時刪除

select  * from #TABLEA

第二種方案

DECLARE @WO varchar(50)

set @WO='PRD_100000048'

DECLARE @ColumnList varchar(5000)

SELECT @ColumnList=STUFF(( SELECT  ',[' + ColoumnName+']'

                    FROM    ( SELECT distinctColoumnName  FROMdbo.[TABLEA]

          wherewo=@WO

                            ) T1

                  FOR

                    XML

PATH('')

                  ),1, 1, '')

print @ColumnList

declare @SQL varchar(max)

set @SQL='

select *from 

  ( select [WO], [ColoumnName], [ColoumnValue]from [TABLEA] where wo='''+@WO+''' ) P

PIVOT( 

  MAX(ColoumnValue) for p.[ColoumnName] in( 

    '+@ColumnList+'

  ) 

) AS PVT

'

exec(@SQL)


相關推薦

SQL SERVER 實現功能

--1生成測試表 CREATE TABLE [dbo].[TABLEA]([WO] [varchar](50) NOT NULL,[ColoumnName] [varchar](50) NULL,[ColoumnValue] [varchar](50) NULL, )  i

SQL Server 實現類似C#中 PadLeft功能

left ret cnblogs alt div use sql eat pan 1 USE [Test] 2 GO 3 SET ANSI_NULLS ON 4 GO 5 SET QUOTED_IDENTIFIER ON 6 GO 7 --@column 表

通過ASP.NET MVC框架 + 原生JavaScript + Ajax + SQL SERVER 實現一個簡單的有論壇功能的網站(有通過iis發布的例子)

簡單的 接下來 發送 思維 學會 control javascrip 數據庫 今天   ASP.NET MVC. M 為Model模型層, V 為View視圖層, C 為Controller控制層。要想使用MVC框架來寫網站就需要了解M V C 的作用分別為哪些。給大家簡單

[SQL ServerPython] 二.T-SQL查詢表格值及Python實現資料分析

在開發專案過程中,更多的是通過Python訪問SQL Server資料庫介面,進行資料探勘的操作;而SQL Server2016版本之後,嵌入了強大的R、Python、Machine Learning等功能,尤其是Python程式碼置於儲存過程中,可以實現一些便捷資料分析功能。 本系

談談功能實現

【摘要】         SQL 提供的靜態轉置功能 pivot 和 unpivot 適用範圍很受限,要用 SQL 實現一些比較複雜的轉置功能常常會遇到語句過於複雜的問題,而且也缺少一個標準的解決思路。而集算器的 SPL

查詢每個學生每門課程的成績,sql server實現

本人經常寫sql server指令碼,有時需要行轉列,這裡做個筆記。 練習指令碼 -- 學生表 CREATE TABLE student ( stuid VARCHAR(16) NOT NULL, stunm VARCHAR(20) NOT NULL, PRI

通過ASP.NET MVC框架 + 原生JavaScript + Ajax + SQL SERVER 實現一個簡單的有論壇功能的網站(有通過iis釋出的例子)

  ASP.NET MVC. M 為Model模型層, V 為View檢視層, C 為Controller控制層。要想使用MVC框架來寫網站就需要了解M V C 的作用分別為哪些。給大家簡單的介紹一下:     1.當你的這個網站要與資料庫互動的時候,你可以使用EF建立一個數據庫模型,也可以用類存放你所需互動

SQL Server 實現跨服務器查詢的方式

lol linked server nbsp drop false err dlink pre 幹貨如下: exec sp_addlinkedserver ‘ITSV‘, ‘‘, ‘SQLOLEDB‘, ‘crs.***.com,6598‘ exec sp_addl

Python和SQL Server 2017的強大功能

詳細 () con 其中 重建 one 為我 大型 ica Python和SQL Server 2017的強大功能Python是SQL Server 2017的新功能。它主要是為了在SQL Server中允許使用基於Python的機器學習,但是它可以與任何Python庫或

翻譯:Python和SQL Server 2017的強大功能

ray app auto 存儲過程 ssa ast 端點 集成 ror Python和SQL Server 2017的強大功能 Python是SQL Server 2017的新版本。它的主要目的是允許在SQL Server中使用基於Python的機器學習,但它可以使用

SQL Server列,列轉行

結果 name pre toolbar des null 表名 再次 arch 一、多行轉成一列(並以","隔開) 表名:A 表數據: 想要的查詢結果: 查詢語句: SELECT name , value = ( STUFF(( SELECT

[SQL ServerPython] 一.安裝環境及T-SQL呼叫python指令碼

在開發專案過程中,更多的是通過Python訪問SQL Server資料庫介面,進行資料探勘的操作;而SQL Server2016版本之後,嵌入了強大的R、Python、Machine Learning等功能,尤其是Python程式碼置於儲存過程中,可以實現一些便捷資料分析功能。 本系

如何在T-sql實現陣列的功能

T-SQL象陣列一樣處理字串、分割字串    在日常的程式設計過程中,陣列是要經常使用到的。在利用SQL對資料庫進行操作時,有時就想在SQL使用陣列,比如將1,2,3,4,5拆分成陣列。可惜的是在T-SQL中不支援陣列。不過還是有變通的辦法。我們可以自己編寫兩函式Get

DataFrame的先轉換成matrix,然後實現,再重新命名列名跟索引

#################測試模型 save_model_path = os.path.join(prj_path, "shixin_cox_model.pkl") df = pd.read_csv('/home/sc/Downloads/tmp/shi

[原始碼和文件分享]基於C#和SQL SERVER實現的零食銷售管理系統

第一章 零食銷售管理系統調查與規劃 1.1 系統調查 1.1.1 調查方法與步驟 開調查會:分配調查工作,計劃出任務流程 發調查問卷:以調查問卷的形式,在網路上釋出調查問卷,邀請一些商家對零食管理系統的需求進行調查,瞭解對功能的需求都有哪些 訪問:對使用者進行

[原始碼和文件分享]基於ASP.NET和SQL SERVER實現的電信報表系統

1 需求分析 專案總體目標是搭建中國網通的報表系統管理平臺,不僅滿足目前的業務需要,還要滿足公司未來的發展,而且要具備良好的可擴充套件性,在網通與聯通合併之後依然能夠正常工作。 1.3 資料字典 手工錄入資料 = 出賬表 + 卡銷售表 + 網間結算表 + 預存轉入表 + 通知單表

Python 和 SQL Server 2017 的強大功能

Python是SQL Server 2017的新功能。它主要是為了允許在SQL Server中使用基於Python的機器學習,但是它可以與任何Python庫或框架一起使用。為了提供可能的例子,Hitendra展示瞭如何安全地使用該功能來提供智慧應用程式快取,其中SQL Serv

[原始碼和文件分享]基於JSP和SQL SERVER實現的B/S架構的超市管理系統

1.2 技術方案 開發和管理一個基於B/S模式的管理資訊系統需要開發和利用高效率的網路資源,並且應該充分利用高技術含量的技術。本系統開發中使用了Java Server Pages和Java Bean。為了能將Java Server Pages、Java Bean以及Java Servlets三種

SQL Server 2016 Alwayson新增功能

概述   SQLServer2016釋出版本到現在已有一年多的時間了,目前最新的穩定版本是SP1版本。接下來就開看看2016在Alwyson上做了哪些改進,記得之前我在寫2014Alwayson的時候提到過幾個需要改進的問題在2016上已經做了改進。 一、自動故障轉移副本數量 在2016之前的版

SQL Server列,列轉行。多行成一列

一、多行轉成一列(並以","隔開)表名:A表資料:想要的查詢結果:查詢語句:SELECT name , value = ( STUFF(( SELECT ',' + value FROM A