纯sql清单格式

slwdgvem  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(306)

我不确定这在sql中是否可行
我有下列表格
下面是所有食物的清单

下面是谁买的东西

基本上用户希望显示如下

我想使用纯sql,因为在我的webapi服务中有一个函数可以转换sqldatareader=>datatable=>csv。所以我不必在api级别上操作数据。

4jb9z9bj

4jb9z9bj1#

如果处理的是固定的水果列表,则独立于数据库的解决方案是条件聚合:

select
    buyer,
    max(case when food = 'apple'  then 'X' end) apple,
    max(case when food = 'banana' then 'X' end) banana,
    max(case when food = 'grapes' then 'X' end) grapes,
    max(case when food = 'lemon'  then 'X' end) lemon
from mytable
group by buyer
order by buyer

如果列表不是固定的,那么需要动态sql。我不认为这符合问题中描述的纯sql的描述。

baubqpgj

baubqpgj2#

声明@cols为nvarchar(max),@query为nvarchar(max);
set@cols=stuff((从food c中选择distinct'、'+quotename(c.food)作为xml路径(''),type).value(''''、'nvarchar(max)'),1,1,')
set@query='从买家数据透视中选择*(计数('+@cols+')p中的食物'
执行(@query)

相关问题