相关疑难解决方法(0)

SQL Server - 动态PIVOT表 - SQL注入

很抱歉这个问题很长,但是这里包含了我用来测试场景的所有SQL,希望能够清楚地说明我在做什么.

我在SQL Server 2005中构建了一些动态SQL来生成PIVOT表.

下面是执行此操作的代码.使用各种选择显示原始数据使用GROUP BY的值和PIVOT中的值,我想要它们.

BEGIN TRAN
--Create the table
CREATE TABLE #PivotTest
(
    ColumnA nvarchar(500),
    ColumnB nvarchar(500),
    ColumnC int
)

--Populate the data
INSERT INTO #PivotTest (ColumnA, ColumnB, ColumnC) VALUES('A', 'X', 1)
INSERT INTO #PivotTest (ColumnA, ColumnB, ColumnC) VALUES('A', 'Y', 2)
INSERT INTO #PivotTest (ColumnA, ColumnB, ColumnC) VALUES('A', 'Z', 3)
INSERT INTO #PivotTest (ColumnA, ColumnB, ColumnC) VALUES('A', 'X', 4)
INSERT INTO #PivotTest (ColumnA, ColumnB, ColumnC) VALUES('A', 'Y', 5)
INSERT INTO #PivotTest (ColumnA, ColumnB, ColumnC) VALUES('B', 'Z', 6)
INSERT …
Run Code Online (Sandbox Code Playgroud)

sql-server pivot sql-injection sql-server-2005 dynamic-pivot

17
推荐指数
1
解决办法
2万
查看次数

数据透视表和连接列

我有一个以下格式的数据库:

 ID    TYPE   SUBTYPE    COUNT   MONTH
 1      A      Z          1       7/1/2008
 1      A      Z          3       7/1/2008
 2      B      C          2       7/2/2008
 1      A      Z          3       7/2/2008
Run Code Online (Sandbox Code Playgroud)

我可以使用SQL将其转换为:

ID    A_Z   B_C   MONTH
1     4     0     7/1/2008
2     0     2     7/2/2008
1     0     3     7/2/2008
Run Code Online (Sandbox Code Playgroud)

所以,在TYPE,SUBTYPE连接成新的列和COUNT总结的地方IDMONTH比赛.

任何提示将不胜感激.这可能在SQL中,还是我应该手动编程?

该数据库是SQL Server 2005.

假设有数百TYPESSUBTYPES因此与"A"和"Z"不应该被硬编码,但动态生成的.

sql database sql-server pivot

14
推荐指数
2
解决办法
2万
查看次数

动态SQL生成列名?

我有一个查询,我正在尝试将行行值转换为列名称,目前我正在使用SUM(Case...) As 'ColumnName'语句,如下所示:

SELECT
SKU1,
SUM(Case When Sku2=157 Then Quantity Else 0 End) As '157',
SUM(Case When Sku2=158 Then Quantity Else 0 End) As '158',
SUM(Case When Sku2=167 Then Quantity Else 0 End) As '167'
FROM
OrderDetailDeliveryReview
Group By
OrderShipToID,
DeliveryDate,
SKU1 
Run Code Online (Sandbox Code Playgroud)

以上查询效果很好,并且完全符合我的需要.但是,我正在SUM(Case...根据以下查询的结果手写出语句:

Select Distinct Sku2 From OrderDetailDeliveryReview 
Run Code Online (Sandbox Code Playgroud)

有没有办法在存储过程中使用T-SQL,我可以SUM(Case...Select Distinct Sku2 From OrderDetailDeliveryReview查询中动态生成语句,然后执行生成的SQL代码?

sql t-sql sql-server sql-server-2005 dynamic-sql

9
推荐指数
1
解决办法
6万
查看次数

用于在SQL Server中生成类似输出查询相关表的矩阵的SQL查询

我有三张桌子:
产品

ProductID   ProductName  
1           Cycle  
2           Scooter  
3           Car  
Run Code Online (Sandbox Code Playgroud)

顾客

CustomerID  CustomerName  
101         Ronald  
102         Michelle  
103         Armstrong  
104         Schmidt  
105         Peterson   
Run Code Online (Sandbox Code Playgroud)

交易

TID   ProductID CustomerID TranDate   Amount  
10001 1         101        01-Jan-11  25000.00  
10002 2         101        02-Jan-11  98547.52  
10003 1         102        03-Feb-11  15000.00  
10004 3         102        07-Jan-11  36571.85  
10005 2         105        09-Feb-11  82658.23  
10006 2         104        10-Feb-11  54000.25  
10007 3         103        20-Feb-11  80115.50  
10008 3         104        22-Feb-11  45000.65  
Run Code Online (Sandbox Code Playgroud)

我写了一个查询来对这样的事务进行分组:

SELECT P.ProductName AS Product,  
       C.CustName AS Customer,  
       SUM(T.Amount) AS Amount …
Run Code Online (Sandbox Code Playgroud)

sql sql-server pivot sql-server-2005

9
推荐指数
1
解决办法
5万
查看次数

在SQL 2005中的PIVOT

我需要转动一列(Numbers列).示例需要此数据:

a 1
a 2
b 3
b 4
c 5
d 6
d 7
d 8
d 9
e 10
e 11
e 12
e 13
e 14
Run Code Online (Sandbox Code Playgroud)

看起来像这样

a 1 2
b 3 4
c 5
d 6 7 8 9
e 10 11 12 13 14
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激...

sql-server pivot sql-server-2005

8
推荐指数
2
解决办法
1万
查看次数

也许是SQL Server PIVOT?

SELECT Name1, Name2, Value FROM mytable 给我以下结果集:

Name1 Name2 Value
A     P1     1
A     P2     1
A     P3     2
B     P1     3
B     P2     1
B     P4     1

我如何将其翻译为:

       A     B
P1     1     4
P2     1     1
P3     2     null
P4     null  1

谢谢,

sql sql-server pivot sql-server-2005

6
推荐指数
2
解决办法
1077
查看次数

SQL Pivot命令

我正在寻找一些关于设计简单数据透视的帮助,以便我可以将它链接到我的查询的其他部分.

我的数据是这样的

物品表

如果我跑,下面是我的表 Select * from items

ITEM      Weight    
12345         10    
12345         11    
654321        50    
654321        20    
654321       100
Run Code Online (Sandbox Code Playgroud)

此表中有数百个项目,但每个项目代码每个最多只有3个权重记录.

我想要所需的输出

ITEM     Weight_1    Weight_2     Weight_3
12345          10          11         null
654321         50          20          100
Run Code Online (Sandbox Code Playgroud)

将会感激任何建议,我已经玩过枢轴,但每个后续项目将权重放入权重4,5,6,7等,而不是从每个项目的权重1开始.

谢谢

更新

以下是我到目前为止使用的,

SELECT r.*
FROM   (SELECT 'weight' + CAST(Row_number() OVER (ORDER BY regtime ASC)AS
                               VARCHAR(10))
                      line,
               id,
               weight
        FROM   items it) AS o PIVOT(MIN([weight]) FOR line IN (weight1, weight2,
       weight3)) AS r  
Run Code Online (Sandbox Code Playgroud)

sql sql-server pivot

5
推荐指数
1
解决办法
2028
查看次数

SQL:将 ISNULL 与动态枢轴结合使用

我想让枢轴产生的所有 NULL 值都变成 0。我已经将 ISNULL 放置在每个可以想象到的地方,但似乎没有任何效果。枢轴与 ISNULL 兼容吗?代码如下:

    DECLARE @startDate datetime
    SET @startDate = '2013-01-01'

    DECLARE @sql varchar(MAX)
    SET @sql = 'SELECT 
    CLIENTNAME, PROJECTNAME, RESOURCE, [' +
      REPLACE(SUBSTRING(CONVERT(varchar, @startDate, 13), 4, 8), ' ', '') + '], [' +
      REPLACE(SUBSTRING(CONVERT(varchar, DATEADD(MONTH, 1, @startDate), 13), 4, 8), ' ', '') + '], [' +
      REPLACE(SUBSTRING(CONVERT(varchar, DATEADD(MONTH, 2, @startDate), 13), 4, 8), ' ', '') + '], [' +
      REPLACE(SUBSTRING(CONVERT(varchar, DATEADD(MONTH, 3, @startDate), 13), 4, 8), ' ', '') + '], [' …
Run Code Online (Sandbox Code Playgroud)

t-sql pivot sql-server-2008

3
推荐指数
1
解决办法
1万
查看次数

SQL复杂动态Pivoting 2

嗨,我在SQL Server中尝试下表的透视

REFID | COL1 | COL2 | Sequence
1       abc    cde     1
1       lmn    rst     2
1       kna    asg     3
2       als    zkd     2
2       zpk    lad     1
Run Code Online (Sandbox Code Playgroud)

我希望输出为

        REFID | 1COL1 | 2COL1 | 3COL1 |1COL2|2COL2|3COL2
           1    abc     lmn      kna    cde   rst   asg
           2    zpk     als      null   lad   zkd   null
Run Code Online (Sandbox Code Playgroud)

原始表中的列数是已知的,但行数未知.任何人都可以帮忙

sql sql-server pivot

2
推荐指数
1
解决办法
436
查看次数