我有一个查询,它检索所有代理和这些模块,结果集将为每个模块返回1行。
SELECT
am.agentID AS agentid,
pa.agentDisplayName agentdisplayname,
m.ModuleName ModuleName
FROM
AgentModule AS am
JOIN primaryagent AS pa
ON am.agentID = pa.AgentID
JOIN Module AS m
ON am.ModuleID = m.ModuleID
WHERE
m. Active = 1
AND pa.groupID = 75
数据集返回如下
agentid | agentdisplayname | modulename
94 | Agent1 | Module 1
94 | Agent1 | Module 2
94 | Agent1 | Module 3
23 | Agent1 | Module 2
23 | Agent1 | Module 3
我正在尝试使用PIVOT函数返回看起来更像的表
agentid | agentdisplayname | Module 1 | Module 2 | Module 3 |.. .. ..
94 | Agent1 | 1 | 1 | 1
23 | Agent2 | 0 | 1 | 1
有动态的模块列表,因此我无法在查询中对它们进行硬编码。我尝试了PICOT,但似乎期望使用聚合函数,但不太确定这是我在此情况下所需的功能。
您可以在结果中添加一个额外的列,并在该列上使用min()。结果将为1
或null
。用isnull
得到0
,而不是null
。
select agentid,
agentdisplayname,
isnull([Module 1], 0) as [Module 1],
isnull([Module 2], 0) as [Module 2],
isnull([Module 3], 0) as [Module 3]
from
(
select agentid, agentdisplayname, modulename, 1 as dummy
from YourResultset
) as T
pivot
(min(dummy) for modulename in ([Module 1],[Module 2],[Module 3])) as P
如果要动态构建它,则需要首先执行查询,该查询返回结果中包含的模块,然后需要使用它来构建动态语句。最好将查询结果存储在临时表中,然后在构建动态查询时使用该表。
SELECT
am.agentID AS agentid,
pa.agentDisplayName agentdisplayname,
m.ModuleName ModuleName
INTO #Tmp
FROM
AgentModule AS am
JOIN primaryagent AS pa
ON am.agentID = pa.AgentID
JOIN Module AS m
ON am.ModuleID = m.ModuleID
WHERE
m. Active = 1
AND pa.groupID = 75
使用构建并运行动态查询#Tmp
。
declare @FieldList1 nvarchar(max)
declare @FieldList2 nvarchar(max)
declare @SQL nvarchar(max)
set @FieldList1 =
(select ',isnull('+quotename(modulename)+', 0) as '+quotename(modulename)
from #Tmp
group by modulename
order by modulename
for xml path(''), type).value('.', 'nvarchar(max)')
set @FieldList2 = stuff(
(select ','+quotename(modulename)
from #Tmp
group by modulename
order by modulename
for xml path(''), type).value('.', 'nvarchar(max)') , 1, 1, '')
set @SQL =
'select agentid, agentdisplayname'+@FieldList1+
'from (select agentid, agentdisplayname, modulename, 1 as dummy
from YourTable) as T
pivot (min(dummy) for modulename in ('+@FieldList2+')) as P'
exec sp_executesql @SQL
drop table #Tmp
问题内容: 我正在使用Ajax发布将表单数据提交到服务器,进行验证,然后根据数据是否有效并可以存储返回一条消息。我的ajax帖子中的成功功能没有运行。这是ajax帖子和成功消息的显示: 标签上没有显示任何消息。我尝试在代码中将successmessage变量设置为一个设置值,并且显示效果很好,所以成功函数一定存在问题,我看不到什么?我也尝试设置错误回调,如下所示: 但是仍然没有消息显示。 问题答案
问题内容: 这段代码的结果为56。 知道里面发生了什么吗?我很困惑。 问题答案: X返回(值+3),而Y返回(值* 2) 给定值为4,这表示。 尽管函数不受范围限制(这意味着您可以安全地“嵌套”函数定义),但是此特定示例容易出错: 1)您不能在调用 之前先调用,因为函数只有执行一次才真正定义。 2)调用两次将导致PHP重新声明function ,从而导致致命错误: 致命错误:无法重新声明y() 两
对非常基础的使用来说,使用 Vite 开发和使用一个静态文件服务器并没有太大区别。然而,Vite 还通过原生 ESM 导入提供了许多主要用于打包场景的增强功能。 NPM 依赖解析和预构建 原生 ES 引入不支持下面这样的裸模块导入: import { someMethod } from 'my-dep' 上面的操作将在浏览器中抛出一个错误。Vite 将在服务的所有源文件中检测此类裸模块导入,并执
Emmet allows you to write large HTML code blocks at speed of light using well-known CSS selectors. But it’s not the only thing that every web-developer needs: occasionally you have to edit your HTML a
问题内容: 我用用,并尝试设置默认目录文件下载。 我在文档中找到了这个: 请改用ChromeDriver(ChromeOptions)。创建一个新的ChromeDriver实例。该功能将传递给chromedriver服务。 问题答案: 我希望您想问一下解决方法,以避免过时。 不推荐使用仅与一起构建的旧方法。现在,它以&为参数。因此,只需构建一个,然后将其与您一起传递即可删除弃用警告。 编辑: 由于
问题内容: 我正在一个网站上,我们从XML文件中获取信息。效果很好,但是现在我需要对内容进行滑动。为此,我将使用jCarousel声明它们可以通过调用回调函数来处理动态加载的内容。 但是,当我成功调用函数时,无法进行初始的ajax加载。我究竟做错了什么? 我做错什么了吗?还是我必须去一个完全不同的地方?:-) 问题答案: 使用hulabula代替hulabula()或将函数直接传递给ajax选项:
问题内容: 我的问题与jQuery方法有关。我无法使用成功参数。 这有效: 这不是: 在第一种情况下,我得到一个JavaScript警报窗口,该窗口使我知道调用的函数正在工作。我在第二个代码块中所做的所有更改都放在了。 这样做的目的是验证$ .ajax是否正在运行,以便在$ .ajax成功运行时可以在其中放置一些实际有用的代码。 问题答案: 在第二个示例中,除非您从服务器成功回电,否则将不会发生任
实现点击工具栏中“+”号扩展区域内添加自定义事件,比如添加“最近订单”、“最近商品”: 注:图片需要添加到SDK中对应bundle资源文件中 /** @return 扩展内容 例如: @[@{@"picName": @"图片-(1)",@"highLightPicName": @"图片hover",@"name": @"图片1"}, @{@"picName": @"图片-(1)",@"highLi