答案 0 :(得分:2)
您可以尝试对DISTINCT
和CROSS JOIN
使用两个子查询
SELECT *
FROM (SELECT DISTINCT Food FROM T) t1
CROSS JOIN (SELECT DISTINCT [Month] FROM T) t2
答案 1 :(得分:1)
您可以使用cross apply
每月给每个食物。那似乎就是您想要的。
declare @table table (Food varchar(16), [Month] int)
insert into @table
values
('Pizza',1),
('Burgers',1),
('Salad',1),
('Tuna',2),
('Pizza',2),
('Burgers',2),
('Salad',2)
select distinct
f.Food
,m.Month
from @table f
cross apply (select distinct [Month] from @table) m
order by m.Month
要找出Tuna
不在哪个月份...
select distinct [MONTH]
from @table
where [Month] not in (select [Month] from @table where Food = 'Tuna')
答案 2 :(得分:0)
据我了解,问题在于您有一张桌子,上面没有某种食物的月份记录。 对我来说,最好的方法是创建一个表“ month_of_year”,该表仅包含1到12之间的数字。
然后:
选择不同的食物 进入#tmp 来自your_table
选择食品,month_of_year.month 从#tmp交叉加入month_of_year
删除表#tmp
然后,例如,如果您要查看当年的食物总量,请从我写的最后一张表的总和表中向左走,然后将获得所有食物/月的总数和在未提供食物的情况下总计为
如果您需要更多信息,请问=)