chi*_*ahu 6 sql database sql-server
这是我的表:
Anganbadi_ID Food Month
-------------------------------------------
1165 ??? 1
1165 ??? 2
1165 ??? 4
1168 ??? 4
2032 ???? 4
2218 ???? 4
2219 ??? 4
2358 ???? 4
2546 ??? 10
Run Code Online (Sandbox Code Playgroud)
有4列Anganbadi_ID, Food, Month, Year,我想Food根据两个不同的月份值比较两次列.
例如,如果我选择Month = 4作为第一个Food(Food-1)列,Month = 10作为第二个Food(Food-2)列,那么它应该如下::
Anganbadi_ID Food-1 Food-2
------------------------------------------
1165 ??? NULL
1168 ??? NULL
2032 ???? NULL
2218 ???? NULL
2219 ??? NULL
2358 ???? NULL
2546 NULL ???
Run Code Online (Sandbox Code Playgroud)
当我尝试这段代码时
SELECT
Anganbadi_ID, Food,
(SELECT Food
FROM Anganbadi AS Anganbadi_2
WHERE (Anganbadi_1.Anganbadi_ID = Anganbadi_ID)
AND (Anganbadi_1.Month = 10)
) AS 'Food(2)'
FROM Anganbadi AS Anganbadi_1
WHERE (Month = 4)
Run Code Online (Sandbox Code Playgroud)
它显示以下结果::
Anganbadi_ID Food-1 Food-2
--------------------------------------------
1165 ??? NULL
1168 ??? NULL
2032 ???? NULL
2218 ???? NULL
2219 ??? NULL
2358 ???? NULL
Run Code Online (Sandbox Code Playgroud)
请尽快帮助我....
Nal*_*526 12
SELECT DISTINCT Anganbadi_ID,
(SELECT Food
FROM Anganbadi
WHERE (Anganbadi_ID = A.Anganbadi_ID)
AND (Month = 4)) AS Food1,
(SELECT Food
FROM Anganbadi
WHERE (Anganbadi_ID = A.Anganbadi_ID)
AND (Month = 10)) AS Food2
FROM Anganbadi AS A
WHERE A.Month = 10 OR A.Month = 4
Run Code Online (Sandbox Code Playgroud)
这里的关键是 ID 上的完整外连接,每个子查询中的条件可以是任何内容,完整外连接将为您提供 ID 匹配的一行,以及 ID 不匹配的相对列中的空值。如果您想要所有结果,即使任一月份的食物都不满足任何一个条件,那么可以在其中一个子查询中使用来自 AllFoodsTable 的选择 ID 进行左连接
SELECT Food1, Food2, ID
FROM (
SELECT Food1, ID
FROM MyTable
WHERE Month = 4
) Con1
FULL OUTER JOIN (
SELECT Food2, ID
FROM MyTable
WHERE Month = 10
) Con2
ON Con1.ID = Con2.ID
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48324 次 |
| 最近记录: |