Sql server SQL查询组合成一行
我在组合以下查询时遇到一些困难,因此结果显示在一行而不是多行中:Sql server SQL查询组合成一行,sql-server,tsql,Sql Server,Tsql,我在组合以下查询时遇到一些困难,因此结果显示在一行而不是多行中: SELECT value FROM dbo.parameter WHERE name='xxxxx.name' SELECT dbo.contest.name AS Event_Name FROM contest INNER JOIN open_box on open_box.contest_id = contest.id GROUP BY dbo.contest.name SELECT COUNT(*) FROM open_o
SELECT value FROM dbo.parameter WHERE name='xxxxx.name'
SELECT dbo.contest.name AS Event_Name
FROM contest
INNER JOIN open_box on open_box.contest_id = contest.id
GROUP BY dbo.contest.name
SELECT COUNT(*) FROM open_option AS total_people
SELECT SUM(scanned) AS TotalScanned,SUM(number) AS Totalnumber
FROM dbo.open_box
GROUP BY contest_id
SELECT COUNT(*) FROM open AS reff
WHERE refer = 'True'
我想显示每列字段中的数据,类似于下图所示。感谢您的帮助
只是
交叉连接
五个查询作为派生表:
SELECT * FROM (
Query1
) AS q1
CROSS JOIN (
Query2
) AS q2
CROSS JOIN (...
假设每个查询只返回一行,那么这个
交叉连接应该只会产生一行。选项卡的解决方案很好,我只是想展示一种替代方法。以下语句用于获取一行中的信息:
SELECT
[xxxx.name]=(SELECT value FROM dbo.parameter WHERE name='xxxxx.name'),
[Event Name]=(SELECT dbo.contest.name
FROM contest
INNER JOIN open_box on open_box.contest_id = contest.id
GROUP BY dbo.contest.name),
[Total People]=(SELECT COUNT(*) FROM open_option),
[Total Scanned]=(SELECT SUM(scanned)
FROM dbo.open_box
GROUP BY contest_id),
[Total Number]=(SELECT SUM(number)
FROM dbo.open_box
GROUP BY contest_id),
Ref=(SELECT COUNT(*) FROM open WHERE refer = 'True');
这要求分别查询扫描的总数
和总数
更新:如果您想将其插入另一个表中,基本上有两种方法
直接从SELECT
语句创建表:
插入到已存在于Insert
这就像是把东西调换过来。你想要多列还是一个字段(有点串联)?欢迎,通过显示预期结果的模型,你可能会得到一个更快的答案…抱歉-应该显示我想要的。我想多个列,但所有的数据在一行-我需要能够提取到一个新的表table@MalcolmHouston更新答案。
SELECT
-- the fields from the first query
INTO
[database_name].[schema_name].[new_table_name]; -- creates table new_table_name
INSERT INTO [database_name].[schema_name].[existing_table_name](
-- the fields in the existing_table_name
)
SELECT
-- the fields from the first query