1. 程式人生 > >SQL動態生成交叉表應用範例

SQL動態生成交叉表應用範例

交叉表的應用較為豐富,應用的方式與範圍也是十分豐富。

這裡應以一個製造業中的工序流程卡的生成為例

原始資料:

最終的效果

靜態生成角本

SELECT 
T.P,T.M,
T1.WORKNAME AS W1,T2.WORKNAME AS W2,T3.WORKNAME AS W3,
T4.WORKNAME AS W4,T5.WORKNAME AS W5,T6.WORKNAME AS W6, 1 AS S 
FROM 
(SELECT distinct P,M FROM RR GROUP BY P,M)T 
LEFT JOIN(SELECT P,M,WORKNAME FROM RR WHERE K=1) T1 ON T.P=T1.P AND T.M=T1.M  
LEFT JOIN(SELECT P,M,WORKNAME FROM RR WHERE K=2) T2 ON T.P=T2.P AND T.M=T2.M  
LEFT JOIN(SELECT P,M,WORKNAME FROM RR WHERE K=3) T3 ON T.P=T3.P AND T.M=T3.M  
LEFT JOIN(SELECT P,M,WORKNAME FROM RR WHERE K=4) T4 ON T.P=T4.P AND T.M=T4.M  
LEFT JOIN(SELECT P,M,WORKNAME FROM RR WHERE K=5) T5 ON T.P=T5.P AND T.M=T5.M 
LEFT JOIN(SELECT P,M,WORKNAME FROM RR WHERE K=6) T6 ON T.P=T6.P AND T.M=T6.M 

動態生成角本

-----------------------------------------------------------
IF EXISTS(SELECT NAME FROM SYSOBJECTS WHERE name='RR')
BEGIN
	DROP TABLE RR
END
-----------------------------------------------------------
select p,m,ROW_NUMBER()OVER (ORDER BY P,M) AS K,workname 
INTO RR
from r 
WHERE 1=2
-----------------------------------------------------------
declare @p varchar(3),@m varchar(4)
declare Rx cursor for select P,m from r GROUP BY P,M
open rx
fetch next from rx into @p,@m
WHILE @@FETCH_STATUS =0
BEGIN
INSERT INTO RR
select p,m,ROW_NUMBER()OVER (ORDER BY P,M) AS K,workname from r 
WHERE 
[email protected]
AND [email protected] fetch next from rx into @p,@m END CLOSE RX DEALLOCATE RX GO ----------------------------------------------------------- DECLARE @SQL VARCHAR(8000) SET @SQL='SELECT T.P,T.M,' SELECT @[email protected]+'T'+K+'.WORKNAME AS R'+K+',' FROM (SELECT DISTINCT RTRIM(CAST(K AS CHAR)) AS K FROM RR)A SELECT @
[email protected]
+' 1 AS S FROM (SELECT P,M FROM RR GROUP BY P,M)T' SELECT @[email protected]+' LEFT JOIN(SELECT P,M,WORKNAME FROM RR WHERE K='+K+') T'+ K+' ON T.P=T'+K+'.P AND T.M=T'+K+'.M ' FROM (SELECT DISTINCT RTRIM(CAST(K AS CHAR)) AS K FROM RR)A EXEC (@SQL)

相關推薦

SQL動態生成交叉應用範例

交叉表的應用較為豐富,應用的方式與範圍也是十分豐富。 這裡應以一個製造業中的工序流程卡的生成為例 原始資料: 最終的效果 靜態生成角本 SELECT T.P,T.M, T1.WORKNAME A

vue+element-ui動態生成form

由於做專案的需要做一個不定項的form表單,即可以動態生成表單項的form表單,自己利用element-ui的el-form表單製作了一個,如下動圖: 此動態form表單是基於element-ui裡的el-form表單基礎上進行修改而來,它實現了新增表單項、刪除表單項、表單驗證和重置表

使用Vue動態生成form單的例項程式碼

具有資料收集、校驗和提交功能的表單生成器,包含複選框、單選框、輸入框、下拉選擇框等元素以及,省市區三級聯動,時間選擇,日期選擇,顏色選擇,檔案/圖片上傳功能,支援事件擴充套件。 歡迎大家star學習交流:github地址 示例   image   https://raw.g

使用vue動態生成form單 form-create

form-create 具有資料收集、校驗和提交功能的表單生成器,支援雙向資料繫結和事件擴充套件,元件包含有複選框、單選框

Vue+Element動態生成單並新增驗證

首先有一個這樣的需求,表單中預設有一個聯絡人資訊,使用者可以再新增新的聯絡人資訊 點選新增更多聯絡人之後 官方文件中有寫用v-for來實現新增表單,但是那是單表單的新增,現在多表單的新增,可以考慮的實現方法是先寫死一個必須的表單,需要新增的兩個表單放在一個div裡

sqlserver sql語句生成指令碼

declare @sql varchar(8000),@tablename varchar(100) set @tablename ='test'--這裡輸入表名 set @sql = 'c

js動態生成form單並提交

在提交json資料時,可能會出後臺無法解析資料的bug,碰到這個不要怕,在提交資料前用js轉一下json就好了,下面我寫的程式碼裡有轉json的程式碼,如果只是傳單個數據,就沒必要寫成json格式了。 $("#exceldown").click(function() {

動態生成html單並提交

之前在做一個問卷調查的時候,用到了動態生成html表單,個人感覺,html方式雖然原始,但它是萬能的解決方法。 生成頁查詢資料庫,然後得到泛型,用stringbuilder 生成html程式碼。  1 List<Model.Quest> wtlist =

資料結構2-動態生成順序的例項與分析

動態建立一個順序表,並完成插入和刪除的操作。程式碼如下: #include"stdio.h" #include"conio.h" #define MaxSize 10 typedef int ElemType;/*將int定義為ElemType*/ typedef str

MsChart教程系列之例項操作資料繫結(交叉)應用

在.NET 3.5下可以使用免費圖表控制元件MsChart,是微軟出品的,需要安裝到VS2008環境中使用。這工具給圖形統計和報表圖形顯示提供了很好的解決辦法,下面我們一起來分享這強大的圖形工具吧。 推薦第一篇: 本文中基本上只會寫出最簡單常用的功能,複雜的資料操作請參考微

使用DataFrame和numpy生成交叉(笛卡爾積)

方法一: import pandas as pd from pandas import DataFrame w_df = DataFrame(['w1','w2'],columns=['worker']) d_df = DataFrame(['0101

jquery validate不支援動態生成

jQuery Validate 外掛為表單提供了強大的驗證功能,讓客戶端表單驗證變得更簡單,同時提供了大量的定製選項,滿足應用程式各種需求。該外掛捆綁了一套有用的驗證方法,包括 URL 和電子郵件驗證,同時提供了一個用來編寫使用者自定義方法的 API。 基本用

angularJs中ng-repeat遍歷動態生成單元素繫結ng-model無效的問題

  我在做練習中偶然遇到這個問題,與大家分享一下。我也是剛開始接觸angularJs,相信也有人同樣遇到過。   問題描述:在使用anjularJs框架核心模組ng雙向資料繫結,在ng-repeat遍歷物件或陣列的時候,用ng-model繫結動態生成表單元素時,利用$sco

React根據後臺資料動態生成Form

import React, { Component } from 'react'; import ReactDOM from 'react-dom'; import { Form, InputNumber, Input, DatePicker, Button,

vue中怎麼動態生成form

form-create 是一個可以通過 JSON 生成具有動態渲染、資料收集、驗證和提交功能的表單生成元件。支援3個UI框架,並且支援生成任何 Vue 元件。內建20種常用表單元件和自定義元件,再複雜的表單都可以輕鬆搞定。 [文件](http://form-create.com/v2/) | [GitHub

SQL生成動態交叉+字串聚合

情景描述:因工作要求,需要做一個動態交叉表,這個比較簡單,百度有很多案例,我是參考這篇文章一個動態交叉表的範例實現的。但存在一個問題,這個動態交叉表是使用聚合函式sum()+group by進行聚合的,聚合函式sum()只能對數值型別進行聚合,而我們需要對字串型進行聚合,這就

動態生成拼接到sql語句的sql注入問題

背景:根據業務需要,每個月生成一張根據年份和月份的表,然後當前的資料存到當前月份的表。 關鍵程式碼如下: String tabName = "tabsaveevent" + strYear + strMonth; String sqlSave = "insert into "

sql server 建立動態交叉

我所瞭解的建立動態交叉表有兩種方法,如下圖,有這樣一張銷售表 ,我想統計個人的銷售業績,如圖二表示出來, 建立銷售表 CREATE TABLE [dbo].[銷售]( [ID] [int] NOT NULL, [員工姓名] [nvarchar](25) NULL,

SQL Server 動態生成資料庫所有Insert語句

一、 背景   SQL Server,如果我們需要把資料庫A的所有表資料到資料庫B中,通常我們會怎麼做呢?我會使用SSMS的匯入匯出功能,進行表資料的匯入匯出,無可厚非,這樣的匯入非常簡單和方便;   但是,當我們的表有上百個,而且有些表是有自增ID的,那麼這個時候使用SSMS的話,你需要一個個手動設定(

mybatis使用註解替代xml配置,動態生成Sql

key list 數據 很難 pro ring 參考 rec 不知道 mybatis使用註解替代xml配置時,遇到判斷條件是否為null或者為空時,@Select很難搞定,不知道怎麽辦? mybatis3中增加了使用註解來配置Mapper的新特性,使用 SelectPro