Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将MS Access转换语句转换为T-SQL_Sql Server_Ms Access_Pivot_Transform - Fatal编程技术网

Sql server 将MS Access转换语句转换为T-SQL

Sql server 将MS Access转换语句转换为T-SQL,sql-server,ms-access,pivot,transform,Sql Server,Ms Access,Pivot,Transform,我正在尝试将以下查询从MS Access转换为T-SQL: TRANSFORM COUNT(TableA.Primary) AS CountOfPrimary SELECT TableA.Id1 ,TableA.Id2 FROM TableA GROUP BY TableA.Id1, TableA.Id2 ORDER BY TableA.Id1 PIVOT TableA.Primary; 使用这个线程和其他资源,我已经了解了这两个独立的要点,我认为第一个case语句能够准确地工作,但是如何在

我正在尝试将以下查询从MS Access转换为T-SQL:

TRANSFORM COUNT(TableA.Primary) AS CountOfPrimary
SELECT 
TableA.Id1
,TableA.Id2
FROM TableA
GROUP BY TableA.Id1, TableA.Id2
ORDER BY TableA.Id1
PIVOT TableA.Primary;
使用这个线程和其他资源,我已经了解了这两个独立的要点,我认为第一个case语句能够准确地工作,但是如何在T-SQL中创建pivot版本呢

SELECT DISTINCT 
    Id1
    ,Id2
    ,'1' = MAX(CASE WHEN Primary = '1' THEN 1 ELSE NULL END)
    ,'0' = MAX(CASE WHEN Primary = '0' THEN 1 ELSE NULL END)
FROM TableA
GROUP BY Id1, Id2
ORDER BY Id1
这是我的初始数据表:

.tg{
边界塌陷:塌陷;
边界间距:0;
}
.tg td{
字体系列:Arial,无衬线;
字体大小:14px;
填充:10px 5px;
边框样式:实心;
边框宽度:1px;
溢出:隐藏;
断字:正常;
边框颜色:黑色;
}
.tg th{
字体系列:Arial,无衬线;
字体大小:14px;
字体大小:正常;
填充:10px 5px;
边框样式:实心;
边框宽度:1px;
溢出:隐藏;
断字:正常;
边框颜色:黑色;
}
.tg.tg-0pky{
边框颜色:继承;
文本对齐:左对齐;
垂直对齐:顶部
}
Id1
Id2
主要的,重要的
8574
9401
1.
2154
5604
1.
3129
6255
1.
2714
7750
1.
3902
9585
1.
0535
6880
1.
0765
9401
1.
5946
9401
1.
7074
9585
1.
7181
9585
0
7181
9585
1.
8635
9401
1.
0334
4433
0
0334
4433
1.
0623
5604
1.

你很接近,而且在正确的轨道上。另外,在列名中使用保留关键字(如“Primary”)时要小心。看看下面的方法是否有效

DECLARE @tab TABLE (Id1 VARCHAR(10), Id2 VARCHAR(10), Pri INT)
INSERT @tab VALUES
('8574','9401',1),
('2154','5604',1),
('3129','6255',1),
('2714','7750',1),
('3902','9585',1),
('0535','6880',1),
('0765','9401',1),
('5946','9401',1),
('7074','9585',1),
('7181','9585',0),
('7181','9585',1),
('8635','9401',1),
('0334','4433',0),
('0334','4433',1),
('0623','5604',1)


SELECT Id1, Id2, [1], CASE WHEN [0] = 0 THEN NULL ELSE [0] END AS [0]
FROM (
    SELECT 
        Id1
        ,Id2
        ,Pri
    FROM @tab
) ts
PIVOT (
    COUNT(Pri)
    FOR Pri IN ([1],[0])
) pt

你能把示例数据和你想要的结果一起发布吗?@BJones我刚刚添加了代码片段,显示了初始数据和想要的结果
DECLARE @tab TABLE (Id1 VARCHAR(10), Id2 VARCHAR(10), Pri INT)
INSERT @tab VALUES
('8574','9401',1),
('2154','5604',1),
('3129','6255',1),
('2714','7750',1),
('3902','9585',1),
('0535','6880',1),
('0765','9401',1),
('5946','9401',1),
('7074','9585',1),
('7181','9585',0),
('7181','9585',1),
('8635','9401',1),
('0334','4433',0),
('0334','4433',1),
('0623','5604',1)


SELECT Id1, Id2, [1], CASE WHEN [0] = 0 THEN NULL ELSE [0] END AS [0]
FROM (
    SELECT 
        Id1
        ,Id2
        ,Pri
    FROM @tab
) ts
PIVOT (
    COUNT(Pri)
    FOR Pri IN ([1],[0])
) pt