gpt4 book ai didi

sql - 避免在温暖时显示重复的 Poptart 口味

转载 作者:行者123 更新时间:2023-12-04 14:16:54 29 4
gpt4 key购买 nike

请查看下面的选择语句:

  SELECT 
fc.flavorid,
fc.flavorname,
CASE
WHEN sa.flavorid IS NULL THEN 'No'
ELSE 'Yes' END ) IsEaten
CASE
WHEN t.tempid IS NULL THEN 'No'
ELSE 'Yes' END ) IsWarm

FROM [poptart] p

LEFT JOIN [diet] d ON d.Active = 1
LEFT JOIN [toaster] ts ON p.poptartid = ts.poptartid AND d.dietname = ts.dietname
LEFT JOIN [flavor] fl ON fl.poptartid = ts.poptartid
LEFT JOIN [flavorcolor] fc ON fc.flavorid = fl.flavorid

LEFT OUTER JOIN [stomach] sa ON sa.flavorid = fc.flavorid

LEFT JOIN [poptart] p2 ON ts.poptartid = p2.poptartid
LEFT JOIN [temp] t ON t.tempid = p2.tempid AND t.Active = 1

GROUP BY fc.flavorid,fc.flavorname,sa.flavorid,t.tempid
ORDER By fc.flavorname

正如您在下面看到的,这会为“berry”的每个“IsWarm”值返回一个。我只想在此列表中返回不同的 flavor 名称,但“IsWarm”字段成为一个问题,因为它可以是或否,我只想在 Yes 可用时显示 Yes,而不是 Yes 和 No 所以它不会提取重复的 flavor 名称,例如“berry”:

    flavorid  |  flavorname  |  IsEaten  |  IsWarm
123 | berry | No | Yes
123 | berry | No | No
234 | fudge | Yes | No
235 | honey | No | No

如何让这个语句只返回这个..?

  flavorid  |  flavorname  |  IsEaten  |  IsWarm
123 | berry | No | Yes
234 | fudge | Yes | No
235 | honey | No | No

有什么建议吗?

最佳答案

试试这个:

;WITH FlavorsList
AS
(
//Your query here
SELECT
fc.flavorid,
fc.flavorname,
CASE
WHEN sa.flavorid IS NULL THEN 'No'
ELSE 'Yes' END ) IsEaten
CASE
WHEN t.tempid IS NULL THEN 'No'
ELSE 'Yes' END ) IsWarm

FROM [poptart] p

LEFT JOIN [diet] d ON d.Active = 1
LEFT JOIN [toaster] ts ON p.poptartid = ts.poptartid
AND d.dietname = ts.dietname
LEFT JOIN [flavor] fl ON fl.poptartid = ts.poptartid
LEFT JOIN [flavorcolor] fc ON fc.flavorid = fl.flavorid

LEFT OUTER JOIN [stomach] sa ON sa.flavorid = fc.flavorid

LEFT JOIN [poptart] p2 ON ts.poptartid = p2.poptartid
LEFT JOIN [temp] t ON t.tempid = p2.tempid AND t.Active = 1

GROUP BY fc.flavorid,fc.flavorname,sa.flavorid,t.tempid
)
SELECT fl.flavorid, fl.flavorname, fl.IsEaten, Max(fl.IsWarm)
FROM FlavorsList fl
GROUP BY fl.flavorid, fl.flavorname, fl.IsEaten
ORDER BY fl.flavorname

我在这里所做的是用一个查询来包装您的结果,该查询将GROUP您第一个查询的结果BY flavorid, flavorname, IsEated。使用 MAX(IsWarm) 作为聚合函数,将使 vlafors 名称的 IsWarm 值保持 DISTINCT。我使用 CTE 编写此查询只是为了简单性和可读性,但您可以将其编写为嵌套查询。

关于sql - 避免在温暖时显示重复的 Poptart 口味,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10256486/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com