Во втором запросе у вас есть
(tbl_ReceiptFolderTypes.FolderTypeID <> 1
OR tbl_ReceiptFolderTypes.FolderTypeID <> 2)
Хорошо, подумайте об этом ... Каждая запись будет удовлетворять этому предикату. Независимо от значения FolderTypeID, это тот случай, когда он не равен 1 или не равен 2.
Если я правильно понимаю, что вы хотите, попробуйте это:
Select ReceiptFolderID, FolderParentID,
f.FolderTypeID, FolderType,
Case t.FolderTypeID
When 1 Then t.FolderType
When 2 Then t.FolderType
Else f.FolderName End FolderName,
t.FolderDescription,
dbo.GetFolderReceiptCount(ReceiptFolderID) ReceiptCount
From tbl_ReceiptFolders f
Left Join tbl_ReceiptFolderTypes t
On f.FolderTypeID = t.FolderTypeID
Where UserID = @UserID
Order By Case When t.FolderTypeID In (1,2)
Then 0 Else 1 End
Отредактируйте, чтобы добавить Count (), попробуйте это:
Select ReceiptFolderID, FolderParentID,
f.FolderTypeID, FolderType,
Case t.FolderTypeID
When 1 Then t.FolderType
When 2 Then t.FolderType
Else f.FolderName End FolderName,
t.FolderDescription,
Count(h.ReceiptFolderID) ReceiptCount
From tbl_ReceiptFolders f
Left Join tbl_ReceiptFolderTypes t
On f.FolderTypeID = t.FolderTypeID
Left Join tbl_ReceiptFolderLnk h
On h.ReceiptFolderID = f.ReceiptFolderID
Where UserID = @UserID
Group By ReceiptFolderID, FolderParentID,
f.FolderTypeID, FolderType, t.FolderDescription,
Case t.FolderTypeID
When 1 Then t.FolderType
When 2 Then t.FolderType
Else f.FolderName End,
Case When t.FolderTypeID In (1,2)
Then 0 Else 1 End
Order By Case When t.FolderTypeID In (1,2)
Then 0 Else 1 End