C# 如何使用同一表中其他列的不同值检索同一列两次
我有以下三张桌子:C# 如何使用同一表中其他列的不同值检索同一列两次,c#,asp.net,sql,sql-server,database,C#,Asp.net,Sql,Sql Server,Database,我有以下三张桌子: Anganbadi_ID Month food(2013) food(2014) 1309 1 हाँ नहीं 1309 2 हाँ NULL 1310 1 हाँ NULL 1310 2 हाँ NULL 1310 3
Anganbadi_ID Month food(2013) food(2014)
1309 1 हाँ नहीं
1309 2 हाँ NULL
1310 1 हाँ NULL
1310 2 हाँ NULL
1310 3 हाँ NULL
1311 3 नहीं NULL
村庄
安干巴迪
现在我想在两个不同年份的基础上检索两次food专栏,其中不同年份的同一个月份只能出现一次,如下所示:
Anganbadi_ID Month food(2013) food(2014)
1309 1 हाँ नहीं
1309 2 हाँ NULL
1310 1 हाँ NULL
1310 2 हाँ NULL
1310 3 हाँ NULL
1311 3 नहीं NULL
但是,当我尝试这个代码时
SELECT DISTINCT Anganbadi.Anganbadi_ID
, Anganbadi.Month
, Anganbadi.Food AS food2013
, NULL AS Food2014
FROM Anganbadi
INNER JOIN Anganbadi_Master ON Anganbadi.Anganbadi_ID = Anganbadi_Master.Anganbadi_ID
INNER JOIN Village ON Anganbadi_Master.Village_ID = Village.Village_ID
WHERE (Anganbadi.Year = 2013)
AND (Anganbadi_Master.Village_ID = 446262)
UNION ALL
SELECT Anganbadi_1.Anganbadi_ID
, Anganbadi_1.Month
, NULL AS food2013
, Anganbadi_1.Food AS Food2014
FROM Anganbadi AS Anganbadi_1
INNER JOIN Anganbadi_Master AS Anganbadi_Master_1 ON Anganbadi_1.Anganbadi_ID =
Anganbadi_Master_1.Anganbadi_ID
INNER JOIN Village AS Village_1 ON Anganbadi_Master_1.Village_ID =
Village_1.Village_ID
WHERE (Anganbadi_1.Year = 2014)
AND (Anganbadi_Master_1.Village_ID = 446262)
它显示以下结果: Anganbadi_ID Month food(2013) food(2014) 1309 1 हाँ NULL 1309 2 हाँ NULL 1310 1 हाँ NULL 1310 2 हाँ NULL 1310 3 हाँ NULL 1311 3 नहीं NULL 1309 1 NULL नहीं Anganbadi_ID月食品(2013)食品(2014) 1309 1 हाँ 无效的 1309 2 हाँ 无效的 1310 1 हाँ 无效的 1310 2 हाँ 无效的 1310 3 हाँ 无效的 1311 3 नहीं 无效的 1309 1空नहीं 此处Anganbadi_ID 1309显示了2013年和2014年同一月份(1)的两个不同行
SELECT *
FROM Anganbadi
PIVOT
(
MAX(food)
FOR [year] IN([2013],[2014])
) AS p
这个问题已经在您的最后一个问题上得到了回答,Sahu,您已经评论说,对于其中一个答案,它工作得很好。那么,为什么要再次发布这个问题呢?साहू, आप यह जवाब में से एक के लिए ठीक काम कर रहा है कि टिप्पणी की है. तो, क्यों फिर सवाल के बाद?@Raj,在前面的问题中,记录只以月份为基础,但现在我想以包含相同月份的年份为基础查找记录。同样在上一个问题的查询中,我将年替换为月,但出现了错误,即“子查询返回的值超过1。当子查询后跟=、!=、=或子查询用作表达式时,这是不允许的。”否,它工作不正常。请给我其他解决方案什么是不正确的?相同的Anganbadi_ID显示了同一年(2013年和2014年)同一个月(1)的两个不同行…我已经在我的上述查询中尝试了相同的事情…先生,请给我上述请求结果的代码。先生,请给我一个不使用PIVOT的解决方案,因为我想在两个不同年份的基础上比较表Anganbadi中的所有列,我不知道如何使用PIVOT处理。我看不到任何两个具有相同的
Anganbadi\u ID
和MONTH
。这个输出有什么问题?
Anganbadi_ID Month food(2013) food(2014)
1309 1 हाँ NULL
1309 2 हाँ NULL
1310 1 हाँ NULL
1310 2 हाँ NULL
1310 3 हाँ NULL
1311 3 नहीं NULL
1309 1 NULL नहीं
SELECT *
FROM Anganbadi
PIVOT
(
MAX(food)
FOR [year] IN([2013],[2014])
) AS p
| ANGANBADI_ID | MONTH | 2013 | 2014 |
----------------------------------------
| 1309 | 1 | हाँ | नहीं |
| 1310 | 1 | हाँ | (null) |
| 1309 | 2 | हाँ | (null) |
| 1310 | 2 | हाँ | (null) |
| 1310 | 3 | हाँ | (null) |
| 1311 | 3 | नहीं | (null) |
| 2032 | 3 | हाँ | (null) |
| 1179 | 5 | हाँ | (null) |